Assembly Diffs
linux arm64
Diffs are based on 2,356,097 contexts (1,011,240 MinOpts, 1,344,857 FullOpts).
MISSED contexts: base: 6,580 (0.26%), diff: 149,254 (5.96%)
Overall (-174,444 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
10,766,848 |
-2,216 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
62,558,804 |
-54,824 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
28,972,948 |
-784 |
| coreclr_tests.run.linux.arm64.checked.mch |
477,091,036 |
-3,828 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,776,144 |
-38,384 |
| libraries.pmi.linux.arm64.checked.mch |
55,531,484 |
-16,396 |
| libraries_tests.run.linux.arm64.Release.mch |
327,300,360 |
-29,964 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
129,945,236 |
-22,424 |
| realworld.run.linux.arm64.checked.mch |
10,946,100 |
-3,288 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
2,628,404 |
-2,336 |
FullOpts (-174,444 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
10,420,592 |
-2,216 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
38,576,764 |
-54,824 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
4,351,728 |
-784 |
| coreclr_tests.run.linux.arm64.checked.mch |
128,261,844 |
-3,828 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,774,508 |
-38,384 |
| libraries.pmi.linux.arm64.checked.mch |
55,411,500 |
-16,396 |
| libraries_tests.run.linux.arm64.Release.mch |
111,878,684 |
-29,964 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
116,465,240 |
-22,424 |
| realworld.run.linux.arm64.checked.mch |
10,371,948 |
-3,288 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
2,627,416 |
-2,336 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-28 (-46.67%) : 2738.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-31.58%) : 3663.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,34 +21,22 @@ G_M11807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M11807_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M11807_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M11807_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M11807_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3, #0x08]
- cmp x2, x3
- beq G_M11807_IG05
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M11807_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x08]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M11807_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M11807_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (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 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +47,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 440.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 19470.dasm - CscBench:CompileBench():ubyte (FullOpts)
@@ -29,95 +29,94 @@
; V18 tmp5 [V18,T05] ( 4, 8 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.String>
;* V19 tmp6 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.PortableExecutableReference>
; V20 tmp7 [V20,T00] ( 10, 80 ) ref -> x24 class-hnd exact "NewObj constructor temp" <System.IO.MemoryStream>
-; V21 tmp8 [V21,T14] ( 2, 4 ) ref -> x0 class-hnd single-def "bubbling QMark2" <Microsoft.CodeAnalysis.Text.SourceText>
-;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <<unknown class>>
-;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-;* V25 tmp12 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-;* V26 tmp13 [V26 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-; V27 tmp14 [V27,T22] ( 2, 2 ) ref -> x15 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.PortableExecutableReference>
-; V28 tmp15 [V28,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.IO.Stream>
-; V29 tmp16 [V29,T23] ( 2, 2 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.ModuleMetadata>
-;* V30 tmp17 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-; V31 tmp18 [V31,T01] ( 7, 14 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
-;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
-;* V33 tmp20 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V34 tmp21 [V34 ] ( 0, 0 ) ref -> zero-ref
-;* V35 tmp22 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V21 tmp8 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
+; V22 tmp9 [V22,T14] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Text.SourceText>
+;* V23 tmp10 [V23,T26] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
+;* V25 tmp12 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+; V26 tmp13 [V26,T22] ( 2, 2 ) ref -> x15 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.PortableExecutableReference>
+; V27 tmp14 [V27,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V28 tmp15 [V28,T23] ( 2, 2 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.ModuleMetadata>
+;* V29 tmp16 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+; V30 tmp17 [V30,T01] ( 7, 14 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
+;* V31 tmp18 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
+;* V32 tmp19 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V33 tmp20 [V33 ] ( 0, 0 ) ref -> zero-ref
+;* V34 tmp21 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V35 tmp22 [V35 ] ( 0, 0 ) ref -> zero-ref
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref
-;* V38 tmp25 [V38 ] ( 0, 0 ) ref -> zero-ref
-;* V39 tmp26 [V39 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V38 tmp25 [V38 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V39 tmp26 [V39 ] ( 0, 0 ) ref -> zero-ref
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref
-;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref
-;* V42 tmp29 [V42 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V44 tmp31 [V44 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V45 tmp32 [V45 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V46 tmp33 [V46 ] ( 0, 0 ) ref -> zero-ref
-;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V48 tmp35 [V48 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
-; V50 tmp37 [V50,T24] ( 2, 2 ) ref -> x3 single-def
-; V51 tmp38 [V51,T16] ( 2, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.AssemblyMetadata>
-;* V52 tmp39 [V52 ] ( 0, 0 ) ref -> zero-ref single-def
-; V53 tmp40 [V53,T25] ( 2, 2 ) ref -> x1
+;* V41 tmp28 [V41 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V42 tmp29 [V42 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V43 tmp30 [V43 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V45 tmp32 [V45 ] ( 0, 0 ) ref -> zero-ref
+;* V46 tmp33 [V46 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V47 tmp34 [V47 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V48 tmp35 [V48 ] ( 0, 0 ) ref -> zero-ref single-def
+; V49 tmp36 [V49,T24] ( 2, 2 ) ref -> x3 single-def
+; V50 tmp37 [V50,T16] ( 2, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.AssemblyMetadata>
+;* V51 tmp38 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
+; V52 tmp39 [V52,T25] ( 2, 2 ) ref -> x1
+;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref
;* V55 tmp42 [V55 ] ( 0, 0 ) ref -> zero-ref
-;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref
-;* V57 tmp44 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
-;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.array (fldOffset=0x0)" P-INDEP
-;* V60 tmp47 [V60,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V61 tmp48 [V61,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;* V62 tmp49 [V62,T26] ( 0, 0 ) ref -> zero-ref single-def "field V14.array (fldOffset=0x0)" P-INDEP
-;* V63 tmp50 [V63,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V24.hasValue (fldOffset=0x0)" P-INDEP
-;* V64 tmp51 [V64,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V24.value (fldOffset=0x1)" P-INDEP
-;* V65 tmp52 [V65,T27] ( 0, 0 ) ref -> zero-ref single-def "field V25._source (fldOffset=0x0)" P-INDEP
-;* V66 tmp53 [V66 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V30._kind (fldOffset=0x0)" P-INDEP
-;* V67 tmp54 [V67 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V30._embedInteropTypes (fldOffset=0x1)" P-INDEP
-;* V68 tmp55 [V68 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.<HasRecursiveAliases>k__BackingField (fldOffset=0x2)" P-INDEP
-;* V69 tmp56 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V30._aliases (fldOffset=0x8)" P-INDEP
-;* V70 tmp57 [V70,T18] ( 0, 0 ) ref -> zero-ref "field V57._source (fldOffset=0x0)" P-INDEP
-;* V71 tmp58 [V71 ] ( 0, 0 ) ubyte -> zero-ref single-def "V26.[000..001)"
-;* V72 tmp59 [V72 ] ( 0, 0 ) ubyte -> zero-ref single-def "V26.[001..002)"
-;* V73 tmp60 [V73 ] ( 0, 0 ) ubyte -> zero-ref single-def "V26.[002..003)"
-;* V74 tmp61 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "V26.[008..016)"
-;* V75 tmp62 [V75 ] ( 0, 0 ) ubyte -> zero-ref "V33.[000..001)"
-;* V76 tmp63 [V76 ] ( 0, 0 ) ubyte -> zero-ref "V33.[001..002)"
-;* V77 tmp64 [V77 ] ( 0, 0 ) ubyte -> zero-ref "V33.[002..003)"
-;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "V33.[008..016)"
-;* V79 tmp66 [V79 ] ( 0, 0 ) ubyte -> zero-ref single-def "V42.[000..001)"
-;* V80 tmp67 [V80 ] ( 0, 0 ) ubyte -> zero-ref single-def "V42.[001..002)"
-;* V81 tmp68 [V81 ] ( 0, 0 ) ubyte -> zero-ref single-def "V42.[002..003)"
-;* V82 tmp69 [V82 ] ( 0, 0 ) ref -> zero-ref single-def "V42.[008..016)"
-;* V83 tmp70 [V83 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[000..001)"
-;* V84 tmp71 [V84 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[001..002)"
-;* V85 tmp72 [V85 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[002..003)"
-;* V86 tmp73 [V86 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)"
-;* V87 tmp74 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V35.[000..001)"
-;* V88 tmp75 [V88 ] ( 0, 0 ) ubyte -> zero-ref "V35.[001..002)"
-;* V89 tmp76 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V35.[002..003)"
-;* V90 tmp77 [V90 ] ( 0, 0 ) ref -> zero-ref "V35.[008..016)"
-;* V91 tmp78 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "V44.[000..001)"
-;* V92 tmp79 [V92 ] ( 0, 0 ) ubyte -> zero-ref single-def "V44.[001..002)"
-;* V93 tmp80 [V93 ] ( 0, 0 ) ubyte -> zero-ref single-def "V44.[002..003)"
-;* V94 tmp81 [V94 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[008..016)"
-;* V95 tmp82 [V95 ] ( 0, 0 ) ubyte -> zero-ref "V39.[000..001)"
-;* V96 tmp83 [V96 ] ( 0, 0 ) ubyte -> zero-ref "V39.[001..002)"
-;* V97 tmp84 [V97 ] ( 0, 0 ) ubyte -> zero-ref "V39.[002..003)"
-;* V98 tmp85 [V98 ] ( 0, 0 ) ref -> zero-ref "V39.[008..016)"
-;* V99 tmp86 [V99 ] ( 0, 0 ) ubyte -> zero-ref single-def "V48.[000..001)"
-;* V100 tmp87 [V100 ] ( 0, 0 ) ubyte -> zero-ref single-def "V48.[001..002)"
-;* V101 tmp88 [V101 ] ( 0, 0 ) ubyte -> zero-ref single-def "V48.[002..003)"
-;* V102 tmp89 [V102 ] ( 0, 0 ) ref -> zero-ref single-def "V48.[008..016)"
-;* V103 tmp90 [V103 ] ( 0, 0 ) byref -> zero-ref "Spilling address for field-by-field copy"
-; V104 tmp91 [V104,T06] ( 4, 8 ) byref -> x14 single-def "Spilling address for field-by-field copy"
-; V105 tmp92 [V105,T07] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V106 tmp93 [V106,T17] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V107 PSPSym [V107,T32] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V108 cse0 [V108,T12] ( 2, 5 ) long -> x22 hoist "CSE - aggressive"
-; V109 cse1 [V109,T11] ( 2, 5 ) ref -> x23 hoist "CSE - aggressive"
+;* V56 tmp43 [V56 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
+;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
+;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.array (fldOffset=0x0)" P-INDEP
+;* V59 tmp46 [V59,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V60 tmp47 [V60,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;* V61 tmp48 [V61,T27] ( 0, 0 ) ref -> zero-ref single-def "field V14.array (fldOffset=0x0)" P-INDEP
+;* V62 tmp49 [V62,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.hasValue (fldOffset=0x0)" P-INDEP
+;* V63 tmp50 [V63,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.value (fldOffset=0x1)" P-INDEP
+;* V64 tmp51 [V64,T28] ( 0, 0 ) ref -> zero-ref single-def "field V24._source (fldOffset=0x0)" P-INDEP
+;* V65 tmp52 [V65 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V29._kind (fldOffset=0x0)" P-INDEP
+;* V66 tmp53 [V66 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V29._embedInteropTypes (fldOffset=0x1)" P-INDEP
+;* V67 tmp54 [V67 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V29.<HasRecursiveAliases>k__BackingField (fldOffset=0x2)" P-INDEP
+;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref single-def "field V29._aliases (fldOffset=0x8)" P-INDEP
+;* V69 tmp56 [V69,T18] ( 0, 0 ) ref -> zero-ref "field V56._source (fldOffset=0x0)" P-INDEP
+;* V70 tmp57 [V70 ] ( 0, 0 ) ubyte -> zero-ref single-def "V25.[000..001)"
+;* V71 tmp58 [V71 ] ( 0, 0 ) ubyte -> zero-ref single-def "V25.[001..002)"
+;* V72 tmp59 [V72 ] ( 0, 0 ) ubyte -> zero-ref single-def "V25.[002..003)"
+;* V73 tmp60 [V73 ] ( 0, 0 ) ref -> zero-ref single-def "V25.[008..016)"
+;* V74 tmp61 [V74 ] ( 0, 0 ) ubyte -> zero-ref "V32.[000..001)"
+;* V75 tmp62 [V75 ] ( 0, 0 ) ubyte -> zero-ref "V32.[001..002)"
+;* V76 tmp63 [V76 ] ( 0, 0 ) ubyte -> zero-ref "V32.[002..003)"
+;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "V32.[008..016)"
+;* V78 tmp65 [V78 ] ( 0, 0 ) ubyte -> zero-ref single-def "V41.[000..001)"
+;* V79 tmp66 [V79 ] ( 0, 0 ) ubyte -> zero-ref single-def "V41.[001..002)"
+;* V80 tmp67 [V80 ] ( 0, 0 ) ubyte -> zero-ref single-def "V41.[002..003)"
+;* V81 tmp68 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "V41.[008..016)"
+;* V82 tmp69 [V82 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[000..001)"
+;* V83 tmp70 [V83 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[001..002)"
+;* V84 tmp71 [V84 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[002..003)"
+;* V85 tmp72 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)"
+;* V86 tmp73 [V86 ] ( 0, 0 ) ubyte -> zero-ref "V34.[000..001)"
+;* V87 tmp74 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V34.[001..002)"
+;* V88 tmp75 [V88 ] ( 0, 0 ) ubyte -> zero-ref "V34.[002..003)"
+;* V89 tmp76 [V89 ] ( 0, 0 ) ref -> zero-ref "V34.[008..016)"
+;* V90 tmp77 [V90 ] ( 0, 0 ) ubyte -> zero-ref single-def "V43.[000..001)"
+;* V91 tmp78 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "V43.[001..002)"
+;* V92 tmp79 [V92 ] ( 0, 0 ) ubyte -> zero-ref single-def "V43.[002..003)"
+;* V93 tmp80 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "V43.[008..016)"
+;* V94 tmp81 [V94 ] ( 0, 0 ) ubyte -> zero-ref "V38.[000..001)"
+;* V95 tmp82 [V95 ] ( 0, 0 ) ubyte -> zero-ref "V38.[001..002)"
+;* V96 tmp83 [V96 ] ( 0, 0 ) ubyte -> zero-ref "V38.[002..003)"
+;* V97 tmp84 [V97 ] ( 0, 0 ) ref -> zero-ref "V38.[008..016)"
+;* V98 tmp85 [V98 ] ( 0, 0 ) ubyte -> zero-ref single-def "V47.[000..001)"
+;* V99 tmp86 [V99 ] ( 0, 0 ) ubyte -> zero-ref single-def "V47.[001..002)"
+;* V100 tmp87 [V100 ] ( 0, 0 ) ubyte -> zero-ref single-def "V47.[002..003)"
+;* V101 tmp88 [V101 ] ( 0, 0 ) ref -> zero-ref single-def "V47.[008..016)"
+;* V102 tmp89 [V102 ] ( 0, 0 ) byref -> zero-ref "Spilling address for field-by-field copy"
+; V103 tmp90 [V103,T06] ( 4, 8 ) byref -> x14 single-def "Spilling address for field-by-field copy"
+; V104 tmp91 [V104,T07] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V105 tmp92 [V105,T17] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V106 PSPSym [V106,T33] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V107 cse0 [V107,T12] ( 2, 5 ) long -> x22 hoist "CSE - aggressive"
+; V108 cse1 [V108,T11] ( 2, 5 ) ref -> x23 hoist "CSE - aggressive"
;
; Lcl frame size = 192
@@ -129,7 +128,7 @@ G_M15366_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
stp x23, x24, [sp, #0xF0]
add fp, sp, #160
add x0, sp, #0xD1FFAB1E
- str x0, [fp, #0x28] // [V107 PSPSym]
+ str x0, [fp, #0x28] // [V106 PSPSym]
;; size=32 bbWeight=1 PerfScore 6.50
G_M15366_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
@@ -156,11 +155,11 @@ G_M15366_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcr arg pop 0
- strb wzr, [fp, #0x20] // [V105 tmp92]
- strb wzr, [fp, #0x21] // [V105 tmp92+0x01]
- ldrh w4, [fp, #0x20] // [V105 tmp92]
- mov x5, xzr
+ strb wzr, [fp, #0x20] // [V104 tmp91]
+ strb wzr, [fp, #0x21] // [V104 tmp91+0x01]
+ ldrh w4, [fp, #0x20] // [V104 tmp91]
mov x1, xzr
+ mov x5, xzr
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -244,7 +243,7 @@ G_M15366_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=4 bbWeight=1 PerfScore 1.00
G_M15366_IG16: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
str w0, [sp, #0x98] // [V13 OutArgs+0x98]
- ldrh w0, [fp, #0x20] // [V105 tmp92]
+ ldrh w0, [fp, #0x20] // [V104 tmp91]
str w0, [sp, #0x28] // [V13 OutArgs+0x28]
mov x0, x20
; gcrRegs +[x0]
+0 (0.00%) : 4403.dasm - ProtoBuf.Helpers:GetTypeCode(System.Type):int (FullOpts)
@@ -9,27 +9,22 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 10, 6.50) ref -> x19 class-hnd single-def <System.Type>
-; V01 loc0 [V01,T02] ( 4, 3.50) int -> x0
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 2 ) int -> x20 "Inline return value spill temp"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V15 tmp13 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp14 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V17 tmp15 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 tmp16 [V18,T01] ( 4, 4 ) int -> x0 "Single return block return value"
-;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V20 tmp18 [V20 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V03 tmp1 [V03,T02] ( 5, 3.50) int -> x20 "Inline return value spill temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V13 tmp11 [V13,T01] ( 4, 4 ) int -> x20 "Single return block return value"
+;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "index expr"
;
; Lcl frame size = 0
@@ -58,14 +53,13 @@ G_M63268_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
sxtw w20, w0
;; size=24 bbWeight=0.50 PerfScore 5.50
G_M63268_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- sxtw w0, w20
- cmp w0, #18
+ cmp w20, #18
bhi G_M63268_IG07
- movz w1, #0xD1FFAB1E
- movk w1, #5 LSL #16
- lsr w1, w1, w0
- tbz w1, #0, G_M63268_IG07
- ;; size=28 bbWeight=1 PerfScore 4.50
+ movz w0, #0xD1FFAB1E
+ movk w0, #5 LSL #16
+ lsr w0, w0, w20
+ tbz w0, #0, G_M63268_IG07
+ ;; size=24 bbWeight=1 PerfScore 4.00
G_M63268_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
b G_M63268_IG15
@@ -116,7 +110,7 @@ G_M63268_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
movk x0, #0xD1FFAB1E LSL #32
cmp x19, x0
bne G_M63268_IG14
- mov w0, #101
+ mov w20, #101
b G_M63268_IG15
;; size=28 bbWeight=0.50 PerfScore 2.25
G_M63268_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
@@ -126,16 +120,19 @@ G_M63268_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov w1, #1
mov w2, #104
cmp x19, x0
- csel w0, w1, w2, ne
+ csel w20, w1, w2, ne
;; size=28 bbWeight=0.50 PerfScore 1.75
-G_M63268_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M63268_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ mov w0, w20
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M63268_IG16: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 260, prolog size 12, PerfScore 30.50, instruction count 65, allocated bytes for code 260 (MethodHash=1b9308db) for method ProtoBuf.Helpers:GetTypeCode(System.Type):int (FullOpts)
+; Total bytes of code 260, prolog size 12, PerfScore 30.25, instruction count 65, allocated bytes for code 260 (MethodHash=1b9308db) for method ProtoBuf.Helpers:GetTypeCode(System.Type):int (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 6079.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitILConstant(System.Type):ubyte (FullOpts)
@@ -9,24 +9,19 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Type>
-; V01 loc0 [V01,T02] ( 3, 3 ) int -> x19
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T00] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type>
-; V04 tmp2 [V04,T03] ( 3, 2 ) int -> x19 "Inline return value spill temp"
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V04 tmp2 [V04,T02] ( 4, 3 ) int -> x19 "Inline return value spill temp"
+;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref "index expr"
;
; Lcl frame size = 8
benchmarks.run_pgo.linux.arm64.checked.mch
-28 (-28.00%) : 13908.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-20.00%) : 135003.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (Tier1)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -24,7 +22,7 @@ G_M1970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M1970_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M1970_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object
@@ -34,30 +32,21 @@ G_M1970_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M1970_IG05
- ;; size=32 bbWeight=1 PerfScore 7.50
-G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M1970_IG05
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M1970_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 19.50
+G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 19.81, instruction count 25, allocated bytes for code 100 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 27.50, instruction count 20, allocated bytes for code 80 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -68,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 80939.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)
@@ -8,22 +8,19 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
-; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref
-; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg"
-; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg"
+; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov x1, x0
; gcrRegs +[x1]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M44215_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M44215_IG08
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00
+G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -104,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+48 (+2.54%) : 135400.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
@@ -11,43 +11,43 @@
;
; V00 this [V00,T00] ( 19, 17.14) ref -> x19 this class-hnd single-def <System.Reflection.Emit.DynamicMethod>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x24 class-hnd single-def <System.String>
-; V02 arg2 [V02,T24] ( 3, 3 ) int -> x2 single-def
-; V03 arg3 [V03,T25] ( 3, 3 ) int -> x3 single-def
-; V04 arg4 [V04,T11] ( 7, 4.38) ref -> x22 class-hnd single-def <System.Type>
+; V02 arg2 [V02,T25] ( 3, 3 ) int -> x2 single-def
+; V03 arg3 [V03,T26] ( 3, 3 ) int -> x3 single-def
+; V04 arg4 [V04,T12] ( 7, 4.38) ref -> x22 class-hnd single-def <System.Type>
; V05 arg5 [V05,T10] ( 5, 6.05) ref -> x21 class-hnd single-def <System.Type[]>
-; V06 arg6 [V06,T08] ( 10, 7.07) ref -> x20 class-hnd single-def <System.Type>
+; V06 arg6 [V06,T07] ( 10, 7.07) ref -> x20 class-hnd single-def <System.Type>
; V07 arg7 [V07,T16] ( 7, 4.04) ref -> x23 class-hnd single-def <System.Reflection.Module>
-; V08 arg8 [V08,T41] ( 2, 1.02) ubyte -> x25 single-def
-; V09 arg9 [V09,T42] ( 1, 1.02) ubyte -> x26 single-def
+; V08 arg8 [V08,T43] ( 2, 1.02) ubyte -> x25 single-def
+; V09 arg9 [V09,T44] ( 1, 1.02) ubyte -> x26 single-def
; V10 loc0 [V10,T02] ( 7, 13.12) int -> x28
-; V11 loc1 [V11,T07] ( 10, 9.65) ref -> x20 class-hnd exact <System.RuntimeType>
+; V11 loc1 [V11,T06] ( 9, 9.14) ref -> x20 class-hnd exact single-def <System.RuntimeType>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T46] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp1 [V13,T48] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp4 [V16,T33] ( 4, 2.72) ref -> x15
-; V17 tmp5 [V17,T29] ( 2, 2.03) int -> x0
-; V18 tmp6 [V18,T40] ( 2, 0.01) int -> x0
-; V19 tmp7 [V19,T30] ( 2, 2.03) int -> x0
-; V20 tmp8 [V20,T34] ( 3, 2.03) ref -> x20
-;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V22 tmp10 [V22,T47] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V23 tmp11 [V23,T45] ( 2, 0.00) int -> x0
-;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V25 tmp13 [V25,T12] ( 6, 6.12) ref -> x15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V26 tmp14 [V26,T48] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp15 [V27,T04] ( 3, 12.11) ref -> [fp+0x18] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
-;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V29 tmp17 [V29,T01] ( 5, 15.13) ref -> x15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V30 tmp18 [V30,T49] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V31 tmp19 [V31,T50] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp20 [V32,T27] ( 3, 4.04) ref -> x15 "guarded devirt return temp"
-; V33 tmp21 [V33,T03] ( 5, 12.11) ref -> x14 "guarded devirt arg temp"
-;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V35 tmp23 [V35,T39] ( 3, 1.36) ref -> x22 "guarded devirt return temp"
-;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V37 tmp25 [V37,T38] ( 3, 2.02) ref -> x20 "guarded devirt return temp"
-;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V16 tmp4 [V16,T35] ( 4, 2.72) ref -> x15
+; V17 tmp5 [V17,T30] ( 2, 2.03) int -> x0
+; V18 tmp6 [V18,T42] ( 2, 0.01) int -> x0
+; V19 tmp7 [V19,T31] ( 2, 2.03) int -> x0
+; V20 tmp8 [V20,T36] ( 3, 2.03) ref -> x20
+; V21 tmp9 [V21,T49] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T47] ( 2, 0.00) int -> x0
+; V23 tmp11 [V23,T34] ( 2, 2.72) ref -> x15 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V24 tmp12 [V24,T50] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp13 [V25,T04] ( 3, 12.11) ref -> [fp+0x10] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V26 tmp14 [V26,T09] ( 2, 8.07) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.RuntimeType>
+; V27 tmp15 [V27,T51] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp16 [V28,T52] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp17 [V29,T28] ( 3, 4.04) ref -> x14 "guarded devirt return temp"
+; V30 tmp18 [V30,T03] ( 5, 12.11) ref -> x14 "guarded devirt arg temp"
+;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V32 tmp20 [V32,T41] ( 3, 1.36) ref -> x22 "guarded devirt return temp"
+;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V34 tmp22 [V34,T40] ( 3, 2.02) ref -> x20 "guarded devirt return temp"
+;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V37 tmp25 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp26 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -58,62 +58,61 @@
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp37 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V52 tmp40 [V52,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V53 tmp41 [V53,T19] ( 5, 5.08) ubyte -> x0 "Inline stloc first use temp"
-;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
-;* V55 tmp43 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
-;* V57 tmp45 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
-; V59 tmp47 [V59,T18] ( 12, 5.08) ref -> x22 class-hnd "Inline stloc first use temp" <System.Type>
-; V60 tmp48 [V60,T21] ( 3, 5.08) int -> x1 "guarded devirt return temp"
-;* V61 tmp49 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V62 tmp50 [V62,T22] ( 3, 5.08) ubyte -> x1 "Inline return value spill temp"
-; V63 tmp51 [V63,T20] ( 5, 5.08) ubyte -> x0 "Inline stloc first use temp"
-;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
-;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V67 tmp55 [V67,T51] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V69 tmp57 [V69,T35] ( 3, 2.03) int -> x1
-; V70 tmp58 [V70,T37] ( 2, 2.03) ubyte -> x14 "Inline stloc first use temp"
-;* V71 tmp59 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V72 tmp60 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp61 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V74 tmp62 [V74,T26] ( 2, 4.06) byref -> x14 single-def "Inlining Arg"
-;* V75 tmp63 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.m_type (fldOffset=0x0)" P-INDEP
-; V76 tmp64 [V76,T31] ( 5, 3.05) ref -> x0 single-def "field V56.m_type (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T36] ( 2, 2.03) ref -> x0 single-def "field V64.m_type (fldOffset=0x0)" P-INDEP
-;* V78 tmp66 [V78 ] ( 0, 0 ) long -> zero-ref "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V79 tmp67 [V79,T32] ( 3, 3.05) long -> x14 "field V71.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V80 tmp68 [V80,T05] ( 3, 12.11) ref -> x2 "arr expr"
-;* V81 tmp69 [V81,T28] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V82 tmp70 [V82,T52] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V83 tmp71 [V83,T53] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V84 tmp72 [V84,T44] ( 2, 0.01) ref -> x1 single-def "argument with side effect"
-; V85 tmp73 [V85,T54] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V86 tmp74 [V86,T55] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V87 tmp75 [V87,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V88 tmp76 [V88,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V89 cse0 [V89,T13] ( 3, 6.05) ref -> x14 "CSE - aggressive"
-; V90 cse1 [V90,T14] ( 3, 6.05) ref -> x14 "CSE - aggressive"
-; V91 cse2 [V91,T09] ( 4, 8.07) long -> [fp+0x28] spill-single-def "CSE - aggressive"
-; V92 cse3 [V92,T15] ( 2, 4.04) ref -> x2 "CSE - aggressive"
-; V93 cse4 [V93,T06] ( 12, 11.81) long -> [fp+0x20] multi-def "CSE - aggressive"
-; V94 cse5 [V94,T23] ( 4, 5.07) int -> x27 "CSE - moderate"
+;* V49 tmp37 [V49,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp38 [V50,T20] ( 5, 5.08) ubyte -> x0 "Inline stloc first use temp"
+;* V51 tmp39 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
+;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
+;* V53 tmp41 [V53 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
+;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
+; V56 tmp44 [V56,T19] ( 12, 5.08) ref -> x22 class-hnd "Inline stloc first use temp" <System.Type>
+; V57 tmp45 [V57,T22] ( 3, 5.08) int -> x1 "guarded devirt return temp"
+;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V59 tmp47 [V59,T23] ( 3, 5.08) ubyte -> x1 "Inline return value spill temp"
+; V60 tmp48 [V60,T21] ( 5, 5.08) ubyte -> x0 "Inline stloc first use temp"
+;* V61 tmp49 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
+;* V62 tmp50 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V63 tmp51 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V64 tmp52 [V64,T53] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V65 tmp53 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V66 tmp54 [V66,T37] ( 3, 2.03) int -> x1
+; V67 tmp55 [V67,T39] ( 2, 2.03) ubyte -> x14 "Inline stloc first use temp"
+;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V69 tmp57 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V70 tmp58 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V71 tmp59 [V71,T27] ( 2, 4.06) byref -> x14 single-def "Inlining Arg"
+;* V72 tmp60 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V52.m_type (fldOffset=0x0)" P-INDEP
+; V73 tmp61 [V73,T32] ( 5, 3.05) ref -> x0 single-def "field V53.m_type (fldOffset=0x0)" P-INDEP
+; V74 tmp62 [V74,T38] ( 2, 2.03) ref -> x0 single-def "field V61.m_type (fldOffset=0x0)" P-INDEP
+;* V75 tmp63 [V75 ] ( 0, 0 ) long -> zero-ref "field V65.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V76 tmp64 [V76,T33] ( 3, 3.05) long -> x14 "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T05] ( 3, 12.11) ref -> x14 "arr expr"
+;* V78 tmp66 [V78,T29] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V79 tmp67 [V79,T54] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V80 tmp68 [V80,T55] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V81 tmp69 [V81,T46] ( 2, 0.01) ref -> x1 single-def "argument with side effect"
+; V82 tmp70 [V82,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V83 tmp71 [V83,T57] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V84 tmp72 [V84,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V85 tmp73 [V85,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V86 cse0 [V86,T13] ( 3, 6.05) ref -> x14 "CSE - aggressive"
+; V87 cse1 [V87,T14] ( 3, 6.05) ref -> x14 "CSE - aggressive"
+; V88 cse2 [V88,T08] ( 4, 8.07) long -> [fp+0x18] spill-single-def "CSE - aggressive"
+; V89 cse3 [V89,T15] ( 2, 4.04) ref -> x14 "CSE - aggressive"
+; V90 cse4 [V90,T24] ( 4, 5.07) int -> x27 "CSE - moderate"
+; V91 rat0 [V91,T01] ( 5, 15.13) ref -> x15 class-hnd "replacement local" <System.RuntimeType>
+; V92 rat1 [V92,T18] ( 5, 5.10) ref -> x22 class-hnd "replacement local" <System.RuntimeType>
+; V93 rat2 [V93,T11] ( 5, 7.62) ref -> x20 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x30]
- stp x21, x22, [sp, #0x40]
- stp x23, x24, [sp, #0x50]
- stp x25, x26, [sp, #0x60]
- stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
+ stp x23, x24, [sp, #0x40]
+ stp x25, x26, [sp, #0x50]
+ stp x27, x28, [sp, #0x60]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -127,17 +126,17 @@ G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
mov x23, x7
; gcrRegs +[x23]
- ldr w25, [fp, #0x80] // [V08 arg8]
- ldr w26, [fp, #0x88] // [V09 arg9]
+ ldr w25, [fp, #0x70] // [V08 arg8]
+ ldr w26, [fp, #0x78] // [V09 arg9]
;; size=60 bbWeight=1 PerfScore 13.50
G_M32743_IG02: ; bbWeight=1, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
- cbz x24, G_M32743_IG41
+ cbz x24, G_M32743_IG43
cmp w2, #22
ccmp w3, #1, 0, eq
- bne G_M32743_IG42
+ bne G_M32743_IG44
;; size=16 bbWeight=1 PerfScore 3.00
G_M32743_IG03: ; bbWeight=1.02, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M32743_IG46
+ cbz x21, G_M32743_IG48
ldr w27, [x21, #0x08]
mov w1, w27
movz x0, #0xD1FFAB1E
@@ -161,33 +160,36 @@ G_M32743_IG04: ; bbWeight=2.02, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x2
add x14, x21, #16
; byrRegs +[x14]
ubfiz x0, x28, #3, #32
- str x0, [fp, #0x28] // [V91 cse2]
+ str x0, [fp, #0x18] // [V88 cse2]
ldr x14, [x14, x0]
; gcrRegs +[x14]
; byrRegs -[x14]
- cbz x14, G_M32743_IG44
+ cbz x14, G_M32743_IG46
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- str x1, [fp, #0x18] // [V27 tmp15]
- ; GC ptr vars +{V27}
+ str x1, [fp, #0x10] // [V25 tmp13]
+ ; GC ptr vars +{V25}
ldr x15, [x14]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x15, x2
- bne G_M32743_IG43
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #0xD1FFAB1E LSL #32
+ cmp x15, x12
+ bne G_M32743_IG45
+ ;; size=52 bbWeight=2.02 PerfScore 33.29
+G_M32743_IG05: ; bbWeight=2.02, gcVars=0000000000000010 {V25}, gcrefRegs=1F84002 {x1 x14 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
mov x15, x14
; gcrRegs +[x15]
- ;; size=56 bbWeight=2.02 PerfScore 34.30
-G_M32743_IG05: ; bbWeight=2.02, gcVars=0000000000000010 {V27}, gcrefRegs=1F88002 {x1 x15 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x14]
cbz x15, G_M32743_IG08
- ;; size=4 bbWeight=2.02 PerfScore 2.02
...
+16 (+6.90%) : 127173.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,17 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf2.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,299.98) int -> x19
+; V01 loc0 [V01,T01] ( 4,299.98) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,446.37) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,247.98) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,743.95) ref -> x15 class-hnd "spilling QMark2" <PerfLabTests.CastingPerf2.Foo>
-; V06 cse0 [V06,T05] ( 2,100.00) ref -> x23 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3, 99.21) ref -> x22 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.01) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3, 99.21) long -> x21 "CSE - aggressive"
-; V10 rat0 [V10,T09] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
-; V11 rat1 [V11,T08] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V03 cse0 [V03,T03] ( 2,100.00) ref -> x23 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4, 99.21) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.01) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3, 99.21) long -> x21 "CSE - aggressive"
+; V07 rat0 [V07,T07] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
+; V08 rat1 [V08,T06] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V09 rat2 [V09,T00] ( 5,694.35) ref -> x15 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
;
; Lcl frame size = 8
@@ -33,12 +31,12 @@ G_M59156_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w19, [fp, #0x84]
;; size=24 bbWeight=0.01 PerfScore 0.06
G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr w20, [x14]
cmp w19, w20
- bge G_M59156_IG12
+ bge G_M59156_IG13
;; size=24 bbWeight=0.01 PerfScore 0.06
G_M59156_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E
@@ -53,11 +51,11 @@ G_M59156_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cbz x23, G_M59156_IG06
;; size=28 bbWeight=0.01 PerfScore 0.06
G_M59156_IG04: ; bbWeight=0.00, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
+ ldr x14, [x23]
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #0xD1FFAB1E LSL #32
+ cmp x14, x15
beq G_M59156_IG06
;; size=24 bbWeight=0.00 PerfScore 0.03
G_M59156_IG05: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
@@ -73,26 +71,42 @@ G_M59156_IG05: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}
;; size=20 bbWeight=0 PerfScore 0.00
G_M59156_IG06: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x23, G_M59156_IG11
+ cbz x23, G_M59156_IG09
;; size=4 bbWeight=99.99 PerfScore 99.99
G_M59156_IG07: ; bbWeight=99.19, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x15, x22
+ ; gcrRegs +[x15]
+ cbnz x15, G_M59156_IG11
+ ;; size=8 bbWeight=99.19 PerfScore 148.79
+G_M59156_IG08: ; bbWeight=99.19, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
+ add x14, x21, #80
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ;; size=8 bbWeight=99.19 PerfScore 148.79
+G_M59156_IG09: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ add w19, w19, #1
+ cmp w19, w20
+ bge G_M59156_IG13
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M59156_IG10: ; bbWeight=99.98, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ b G_M59156_IG06
+ ;; size=4 bbWeight=99.98 PerfScore 99.98
+G_M59156_IG11: ; bbWeight=49.60, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x15]
+ ldr x14, [x15]
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #0xD1FFAB1E LSL #32
+ cmp x14, x12
+ beq G_M59156_IG08
+ ;; size=24 bbWeight=49.60 PerfScore 297.58
+G_M59156_IG12: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M59156_IG10
- ;; size=12 bbWeight=99.19 PerfScore 198.39
-G_M59156_IG08: ; bbWeight=49.60, gcrefRegs=C08002 {x1 x15 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M59156_IG10
- ;; size=24 bbWeight=49.60 PerfScore 297.58
-G_M59156_IG09: ; bbWeight=24.80, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -102,20 +116,10 @@ G_M59156_IG09: ; bbWeight=24.80, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=24.80 PerfScore 161.19
-G_M59156_IG10: ; bbWeight=99.19, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- add x14, x21, #80
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
- ;; size=8 bbWeight=99.19 PerfScore 148.79
-G_M59156_IG11: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w20
- blt G_M59156_IG06
- ;; size=12 bbWeight=99.99 PerfScore 199.98
-G_M59156_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x22-x23]
+ b G_M59156_IG08
+ ;; size=44 bbWeight=0 PerfScore 0.00
+G_M59156_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x0 x15 x22-x23]
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -124,7 +128,7 @@ G_M59156_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 24, PerfScore 1106.13, instruction count 58, allocated bytes for code 232 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 248, prolog size 24, PerfScore 995.33, instruction count 62, allocated bytes for code 248 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -135,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.90%) : 72602.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,17 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,299.98) int -> x19
+; V01 loc0 [V01,T01] ( 4,299.98) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,448.87) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,249.37) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,748.12) ref -> x15 class-hnd "spilling QMark2" <PerfLabTests.Foo[]>
-; V06 cse0 [V06,T05] ( 2,100.00) ref -> x23 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3, 99.77) ref -> x22 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.01) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3, 99.77) long -> x21 "CSE - aggressive"
-; V10 rat0 [V10,T09] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
-; V11 rat1 [V11,T08] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V03 cse0 [V03,T03] ( 2,100.00) ref -> x23 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4, 99.77) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.01) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3, 99.77) long -> x21 "CSE - aggressive"
+; V07 rat0 [V07,T07] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
+; V08 rat1 [V08,T06] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V09 rat2 [V09,T00] ( 5,698.25) ref -> x15 class-hnd "replacement local" <PerfLabTests.Foo[]>
;
; Lcl frame size = 8
@@ -33,12 +31,12 @@ G_M13964_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w19, [fp, #0x84]
;; size=24 bbWeight=0.01 PerfScore 0.07
G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr w20, [x14]
cmp w19, w20
- bge G_M13964_IG12
+ bge G_M13964_IG13
;; size=24 bbWeight=0.01 PerfScore 0.06
G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E
@@ -53,11 +51,11 @@ G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cbz x23, G_M13964_IG06
;; size=28 bbWeight=0.01 PerfScore 0.07
G_M13964_IG04: ; bbWeight=0.01, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
+ ldr x14, [x23]
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #0xD1FFAB1E LSL #32
+ cmp x14, x15
beq G_M13964_IG06
;; size=24 bbWeight=0.01 PerfScore 0.03
G_M13964_IG05: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
@@ -77,45 +75,51 @@ G_M13964_IG05: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}
;; size=36 bbWeight=0 PerfScore 0.00
G_M13964_IG06: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x23, G_M13964_IG11
+ cbz x23, G_M13964_IG09
;; size=4 bbWeight=99.99 PerfScore 99.99
G_M13964_IG07: ; bbWeight=99.75, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x15, x22
+ ; gcrRegs +[x15]
+ cbnz x15, G_M13964_IG11
+ ;; size=8 bbWeight=99.75 PerfScore 149.62
+G_M13964_IG08: ; bbWeight=99.75, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
+ add x14, x21, #16
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ;; size=8 bbWeight=99.75 PerfScore 149.62
+G_M13964_IG09: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ add w19, w19, #1
+ cmp w19, w20
+ bge G_M13964_IG13
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M13964_IG10: ; bbWeight=99.98, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ b G_M13964_IG06
+ ;; size=4 bbWeight=99.98 PerfScore 99.98
+G_M13964_IG11: ; bbWeight=49.87, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x15]
+ ldr x14, [x15]
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #0xD1FFAB1E LSL #32
+ cmp x14, x12
+ beq G_M13964_IG08
+ ;; size=24 bbWeight=49.87 PerfScore 299.25
+G_M13964_IG12: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M13964_IG10
- ;; size=12 bbWeight=99.75 PerfScore 199.50
-G_M13964_IG08: ; bbWeight=49.87, gcrefRegs=C08002 {x1 x15 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M13964_IG10
- ;; size=24 bbWeight=49.87 PerfScore 299.25
-G_M13964_IG09: ; bbWeight=24.94, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- ;; size=12 bbWeight=24.94 PerfScore 49.87
-G_M13964_IG10: ; bbWeight=99.75, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- add x14, x21, #16
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
- ;; size=8 bbWeight=99.75 PerfScore 149.62
-G_M13964_IG11: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w20
- blt G_M13964_IG06
- ;; size=12 bbWeight=99.99 PerfScore 199.98
-G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x22-x23]
+ b G_M13964_IG08
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M13964_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x0 x15 x22-x23]
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -124,7 +128,7 @@ G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 24, PerfScore 998.44, instruction count 58, allocated bytes for code 232 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 248, prolog size 24, PerfScore 998.67, instruction count 62, allocated bytes for code 248 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -135,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.linux.arm64.checked.mch
-28 (-28.00%) : 5355.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-25.93%) : 64364.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x20]
mov fp, sp
str x1, [fp, #0x18]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [x1, #0x38]
+ ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
- ldr x2, [x20]
+ mov x0, x19
+ ldr x2, [x19]
ldr x2, [x2, #0x70]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M60617_IG05
- ;; size=44 bbWeight=1 PerfScore 19.50
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M60617_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-21.88%) : 65019.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -8,14 +8,13 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
-; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo>
+; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> x20 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V06 cse0 [V06,T05] ( 3, 3 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -25,51 +24,40 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x21, [sp, #0x28]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- mov x20, x1
- ; gcrRegs +[x20]
- mov w21, w2
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M29548_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x1
+ ; gcrRegs +[x19]
+ mov w20, w2
+ ;; size=28 bbWeight=1 PerfScore 5.50
+G_M29548_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x21, [x0, #0x38]
+ ldr x0, [x21]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- uxtb w2, w21
- mov x0, x20
+ uxtb w2, w20
+ mov x0, x19
movz x3, #0xD1FFAB1E // code for System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M29548_IG05
- ;; size=52 bbWeight=1 PerfScore 15.50
-G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M29548_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x21]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M29548_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=56 bbWeight=1 PerfScore 18.50
+G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 20, PerfScore 29.31, instruction count 32, allocated bytes for code 128 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 100, prolog size 20, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -80,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 68569.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,36 +25,22 @@ G_M50369_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0x54]
;; size=20 bbWeight=1 PerfScore 5.50
G_M50369_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr w20, [x1]
cmp w19, w20
- bge G_M50369_IG07
+ bge G_M50369_IG04
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
ldr x22, [x21]
; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50
-G_M50369_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M50369_IG06
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M50369_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M50369_IG06
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M50369_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -65,19 +48,31 @@ G_M50369_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00
+G_M50369_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ add x14, x21, #16
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M50369_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add x14, x21, #16
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1
cmp w19, w20
blt G_M50369_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
-G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00
+G_M50369_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
@@ -86,7 +81,7 @@ G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -97,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 24859.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,36 +25,22 @@ G_M56449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0x54]
;; size=20 bbWeight=1 PerfScore 5.50
G_M56449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr w20, [x1]
cmp w19, w20
- bge G_M56449_IG07
+ bge G_M56449_IG04
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
ldr x22, [x21]
; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50
-G_M56449_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M56449_IG06
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M56449_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M56449_IG06
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M56449_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -65,19 +48,31 @@ G_M56449_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00
+G_M56449_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ add x14, x21, #24
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M56449_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add x14, x21, #24
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1
cmp w19, w20
blt G_M56449_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
-G_M56449_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00
+G_M56449_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
@@ -86,7 +81,7 @@ G_M56449_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -97,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 69011.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,36 +25,22 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0x54]
;; size=20 bbWeight=1 PerfScore 5.50
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr w20, [x1]
cmp w19, w20
- bge G_M40467_IG07
+ bge G_M40467_IG04
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
ldr x22, [x21]
; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M40467_IG06
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M40467_IG06
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -65,19 +48,31 @@ G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ add x14, x21, #8
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1
cmp w19, w20
blt G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
@@ -86,7 +81,7 @@ G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -97,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch
-24 (-40.00%) : 264269.dasm - Program:CastToArray(System.Object):int
@@ -6,44 +6,32 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <int[]>
;
; Lcl frame size = 0
G_M17219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M17219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M17219_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M17219_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17219_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
- beq G_M17219_IG05
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M17219_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
- mov x0, x3
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M17219_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M17219_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 7.19, instruction count 15, allocated bytes for code 60 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
+; Total bytes of code 36, prolog size 8, PerfScore 6.50, instruction count 9, allocated bytes for code 36 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
; ============================================================
Unwind Info:
@@ -54,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-28.57%) : 623109.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,12 +8,11 @@
; 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) long -> x19 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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 -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -22,40 +21,30 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x1, [fp, #0x10]
- mov x19, x1
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ldr x0, [x1, #0x38]
+ ldr x19, [x0]
+ mov x0, x19
mov x1, x2
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1-x2] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M51557_IG05
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M51557_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M51557_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 19.81, instruction count 21, allocated bytes for code 84 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 17.50, instruction count 15, allocated bytes for code 60 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 1646.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.37%) : 424451.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
@@ -5,31 +5,29 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5859
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5859
; 3 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 4 ) byref -> x0 this single-def
+; V00 this [V00,T02] ( 4, 4 ) byref -> x0 this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T12] ( 2, 1.76) int -> x0 "guarded devirt return temp"
-; V04 tmp2 [V04,T01] ( 6, 8 ) ref -> x20 single-def "guarded devirt arg temp"
+; V03 tmp1 [V03,T09] ( 2, 1.76) int -> x0 "guarded devirt return temp"
+; V04 tmp2 [V04,T00] ( 6, 8 ) ref -> x20 single-def "guarded devirt arg temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-; V07 tmp5 [V07,T11] ( 3, 1.76) int -> x0
-;* V08 tmp6 [V08,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V09 tmp7 [V09,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.TypeDesc>
-; V10 tmp8 [V10,T06] ( 3, 3.52) ref -> x21 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V12 tmp10 [V12,T13] ( 3, 0.95) ref -> x21 "guarded devirt return temp"
-; V13 tmp11 [V13,T09] ( 5, 2.85) ref -> x0 single-def "guarded devirt arg temp"
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V15 tmp13 [V15,T10] ( 3, 1.76) ref -> x22 "guarded devirt return temp"
-; V16 tmp14 [V16,T04] ( 5, 5.28) ref -> x0 single-def "guarded devirt arg temp"
-;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V18 tmp16 [V18,T00] ( 8, 5.04) ref -> x19 single-def "field V01.Target (fldOffset=0x0)" P-INDEP
-; V19 tmp17 [V19,T05] ( 2, 2 ) int -> x2 single-def "field V01.Id (fldOffset=0x8)" P-INDEP
-; V20 cse0 [V20,T08] ( 3, 2.88) long -> x21 "CSE - aggressive"
+; V07 tmp5 [V07,T08] ( 3, 1.76) int -> x0
+; V08 tmp6 [V08,T05] ( 3, 3.52) ref -> x21 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V09 tmp7 [V09,T10] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V11 tmp9 [V11,T11] ( 3, 0.95) ref -> x21 "guarded devirt return temp"
+; V12 tmp10 [V12,T06] ( 5, 2.85) ref -> x0 single-def "guarded devirt arg temp"
+;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+; V14 tmp12 [V14,T07] ( 3, 1.76) ref -> x22 "guarded devirt return temp"
+; V15 tmp13 [V15,T03] ( 5, 5.28) ref -> x0 single-def "guarded devirt arg temp"
+;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+; V17 tmp15 [V17,T01] ( 8, 5.04) ref -> x19 single-def "field V01.Target (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) int -> x2 single-def "field V01.Id (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
@@ -49,14 +47,14 @@ G_M34119_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
ldr x20, [x0]
; gcrRegs +[x20]
ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
+ movz x0, #0xD1FFAB1E
+ ; byrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x1, x0
bne G_M34119_IG10
;; size=40 bbWeight=1 PerfScore 13.50
G_M34119_IG03: ; bbWeight=0.88, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -68,9 +66,12 @@ G_M34119_IG03: ; bbWeight=0.88, gcrefRegs=180000 {x19 x20}, byrefRegs=000
cbz x0, G_M34119_IG16
ldr x0, [x19]
; gcrRegs -[x0]
- cmp x0, x21
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
bne G_M34119_IG06
- ;; size=36 bbWeight=0.88 PerfScore 7.48
+ ;; size=48 bbWeight=0.88 PerfScore 8.80
G_M34119_IG04: ; bbWeight=0.48, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x58]
; gcrRegs +[x0]
@@ -185,7 +186,7 @@ G_M34119_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M34119_IG08
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 20, PerfScore 58.78, instruction count 89, allocated bytes for code 356 (MethodHash=958b7ab8) for method ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
+; Total bytes of code 368, prolog size 20, PerfScore 60.10, instruction count 92, allocated bytes for code 368 (MethodHash=958b7ab8) for method ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -196,7 +197,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 89 (0x00059) Actual length = 356 (0x000164)
+ Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.41%) : 420564.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
@@ -5,31 +5,29 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5986
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5986
; 3 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 4 ) byref -> x0 this single-def
+; V00 this [V00,T02] ( 4, 4 ) byref -> x0 this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T13] ( 2, 1.70) int -> x0 "guarded devirt return temp"
-; V04 tmp2 [V04,T01] ( 6, 8 ) ref -> x20 single-def "guarded devirt arg temp"
+; V03 tmp1 [V03,T10] ( 2, 1.70) int -> x0 "guarded devirt return temp"
+; V04 tmp2 [V04,T00] ( 6, 8 ) ref -> x20 single-def "guarded devirt arg temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-; V07 tmp5 [V07,T12] ( 3, 1.70) int -> x0
-;* V08 tmp6 [V08,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V09 tmp7 [V09,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.TypeDesc>
-; V10 tmp8 [V10,T07] ( 3, 3.40) ref -> x21 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V12 tmp10 [V12,T10] ( 3, 1.70) ref -> x21 "guarded devirt return temp"
-; V13 tmp11 [V13,T04] ( 5, 5.10) ref -> x0 single-def "guarded devirt arg temp"
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V15 tmp13 [V15,T11] ( 3, 1.70) ref -> x22 "guarded devirt return temp"
-; V16 tmp14 [V16,T05] ( 5, 5.10) ref -> x0 single-def "guarded devirt arg temp"
-;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V18 tmp16 [V18,T00] ( 8, 4.55) ref -> x19 single-def "field V01.Target (fldOffset=0x0)" P-INDEP
-; V19 tmp17 [V19,T06] ( 2, 2 ) int -> x2 single-def "field V01.Id (fldOffset=0x8)" P-INDEP
-; V20 cse0 [V20,T09] ( 3, 2.85) long -> x21 "CSE - aggressive"
+; V07 tmp5 [V07,T09] ( 3, 1.70) int -> x0
+; V08 tmp6 [V08,T06] ( 3, 3.40) ref -> x21 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V09 tmp7 [V09,T11] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V11 tmp9 [V11,T07] ( 3, 1.70) ref -> x21 "guarded devirt return temp"
+; V12 tmp10 [V12,T03] ( 5, 5.10) ref -> x0 single-def "guarded devirt arg temp"
+;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+; V14 tmp12 [V14,T08] ( 3, 1.70) ref -> x22 "guarded devirt return temp"
+; V15 tmp13 [V15,T04] ( 5, 5.10) ref -> x0 single-def "guarded devirt arg temp"
+;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+; V17 tmp15 [V17,T01] ( 8, 4.55) ref -> x19 single-def "field V01.Target (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T05] ( 2, 2 ) int -> x2 single-def "field V01.Id (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
@@ -49,14 +47,14 @@ G_M34119_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
ldr x20, [x0]
; gcrRegs +[x20]
ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
+ movz x0, #0xD1FFAB1E
+ ; byrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x1, x0
bne G_M34119_IG08
;; size=40 bbWeight=1 PerfScore 13.50
G_M34119_IG03: ; bbWeight=0.85, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -68,7 +66,10 @@ G_M34119_IG03: ; bbWeight=0.85, gcrefRegs=180000 {x19 x20}, byrefRegs=000
cbz x0, G_M34119_IG15
ldr x0, [x19]
; gcrRegs -[x0]
- cmp x0, x21
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
bne G_M34119_IG13
ldr x0, [x19, #0x58]
; gcrRegs +[x0]
@@ -80,7 +81,7 @@ G_M34119_IG03: ; bbWeight=0.85, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bne G_M34119_IG12
ldr x21, [x0, #0x08]
; gcrRegs +[x21]
- ;; size=68 bbWeight=0.85 PerfScore 17.43
+ ;; size=80 bbWeight=0.85 PerfScore 18.70
G_M34119_IG04: ; bbWeight=0.85, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x58]
@@ -182,7 +183,7 @@ G_M34119_IG15: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M34119_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 20, PerfScore 57.00, instruction count 88, allocated bytes for code 352 (MethodHash=958b7ab8) for method ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
+; Total bytes of code 364, prolog size 20, PerfScore 58.27, instruction count 91, allocated bytes for code 364 (MethodHash=958b7ab8) for method ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -193,7 +194,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 88 (0x00058) Actual length = 352 (0x000160)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+14.06%) : 254447.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -13,58 +13,74 @@
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T06] ( 3, 2 ) ref -> x0 "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,T07] ( 3, 2 ) ubyte -> x1 "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 ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T08] ( 3, 2 ) int -> x22
-; V09 tmp8 [V09,T09] ( 2, 2 ) ubyte -> x1 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T03] ( 2, 4 ) byref -> x0 single-def "Inlining Arg"
-;* V14 tmp13 [V14,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp14 [V15,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T05] ( 3, 3 ) long -> x0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V18 cse0 [V18,T01] ( 3, 3 ) long -> x20 "CSE - aggressive"
-; V19 cse1 [V19,T02] ( 3, 3 ) long -> x21 "CSE - aggressive"
+; V04 tmp3 [V04,T05] ( 4, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T07] ( 3, 2 ) int -> x21
+; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> x1 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> x0 single-def "Inlining Arg"
+;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp13 [V14 ] ( 0, 0 ) long -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T04] ( 3, 3 ) long -> x0 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> x20 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x20, x21
- bne G_M8853_IG10
- ldr x0, [x19, #0x18]
+ ldrsb wzr, [x19]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ cbz x20, G_M8853_IG05
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M8853_IG05
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M8853_IG13
+ ldr x0, [x20, #0x18]
tbnz w0, #1, G_M8853_IG12
ldr w0, [x0]
and w0, w0, #0xD1FFAB1E
cmp w0, #192, LSL #12
- cset x22, eq
- ;; size=48 bbWeight=1 PerfScore 14.50
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- uxtb w1, w22
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbnz w1, G_M8853_IG08
+ cset x21, eq
+ ;; size=28 bbWeight=1 PerfScore 9.50
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ uxtb w1, w21
+ cbnz w1, G_M8853_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x19, x0
- beq G_M8853_IG06
- cmp x20, x21
+ beq G_M8853_IG09
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
bne G_M8853_IG11
mov x0, x19
; gcrRegs +[x0]
@@ -74,64 +90,66 @@ G_M8853_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
ldr x1, [x1]
blr x1
; gcrRegs -[x19]
- ;; size=56 bbWeight=1 PerfScore 11.50
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+ ;; size=68 bbWeight=1 PerfScore 15.00
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M8853_IG06: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M8853_IG09: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov x0, xzr
;; size=4 bbWeight=0.58 PerfScore 0.29
-G_M8853_IG07: ; bbWeight=0.58, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+G_M8853_IG10: ; bbWeight=0.58, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.58 PerfScore 2.34
-G_M8853_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.58 PerfScore 2.92
+G_M8853_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x19]
+ ldr x1, [x1, #0xA0]
+ ldr x1, [x1, #0x20]
+ blr x1
+ ; gcrRegs -[x19]
+ b G_M8853_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M8853_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x19-x20]
+ mov w21, wzr
+ b G_M8853_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x19]
ldr x1, [x1, #0x78]
ldr x1, [x1, #0x18]
blr x1
; gcrRegs -[x0]
tst w0, #32
cset x1, ne
- b G_M8853_IG04
+ cbz w1, G_M8853_IG07
;; size=32 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0xA0]
- ldr x1, [x1, #0x20]
- blr x1
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M8853_IG05
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov w22, wzr
- b G_M8853_IG03
- ;; size=8 bbWeight=0 PerfScore 0.00
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M8853_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 256, prolog size 16, PerfScore 37.13, instruction count 64, allocated bytes for code 256 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 292, prolog size 16, PerfScore 45.84, instruction count 73, allocated bytes for code 292 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -142,7 +160,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,10 +174,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
libraries.crossgen2.linux.arm64.checked.mch
-36 (-34.62%) : 45482.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -8,39 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M7606_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -48,22 +35,14 @@ G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,9 +61,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-36 (-34.62%) : 45959.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)
@@ -8,39 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M16223_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M16223_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -48,22 +35,14 @@ G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M16223_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,9 +61,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-36 (-34.62%) : 134191.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -8,41 +8,28 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M8451_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -50,22 +37,14 @@ G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -84,9 +63,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+4 (+1.09%) : 34863.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
+4 (+1.09%) : 136816.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
+4 (+1.09%) : 179280.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
libraries.pmi.linux.arm64.checked.mch
-28 (-46.67%) : 236881.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 83899.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M7606_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-33.33%) : 245319.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,48 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.25) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> [fp+0x18] class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.__Canon>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51997_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x20]
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M51997_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M51997_IG03: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x2]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x0, x3
- str x2, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- beq G_M51997_IG05
- ;; size=32 bbWeight=0.25 PerfScore 4.38
-G_M51997_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- ; GC ptr vars -{V04}
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- ;; size=12 bbWeight=0.12 PerfScore 0.31
-G_M51997_IG05: ; bbWeight=1, gcVars=0000000000000001 {V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ldp x0, x2, [x19, #0x08]
- ; gcrRegs +[x0 x2]
- ldr x1, [fp, #0x18] // [V04 tmp2]
+ mov x1, x0
; gcrRegs +[x1]
+ ldp x0, x2, [x19, #0x08]
+ ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):ubyte:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
ldr wzr, [x0]
- ;; size=28 bbWeight=1 PerfScore 13.50
-G_M51997_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ;; size=48 bbWeight=1 PerfScore 25.00
+G_M51997_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-G_M51997_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0-x1]
- ; GC ptr vars -{V04}
- str x2, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- b G_M51997_IG05
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 20, PerfScore 28.69, instruction count 30, allocated bytes for code 120 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 20, PerfScore 33.00, instruction count 20, allocated bytes for code 80 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -88,7 +60,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,8 +68,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
E4 end
+4 (+0.93%) : 195691.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
@@ -8,23 +8,21 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 18, 10.50) ref -> x19 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V02 loc1 [V02,T05] ( 3, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 5.50) ref -> x19 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
+; V01 loc0 [V01,T01] ( 12, 6 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V02 loc1 [V02,T04] ( 3, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp2 [V05,T01] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp3 [V06,T06] ( 3, 1.50) int -> x2 "Inline return value spill temp"
-; V07 tmp4 [V07,T07] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T08] ( 3, 1.50) int -> x2 "Inline return value spill temp"
-; V09 tmp6 [V09,T09] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
-; V10 tmp7 [V10,T02] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref
-;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp11 [V14,T04] ( 2, 2 ) int -> x0 "argument with side effect"
-; V15 cse0 [V15,T10] ( 3, 1.50) long -> x20 "CSE - moderate"
-; V16 cse1 [V16,T11] ( 3, 1.50) long -> x20 "CSE - moderate"
+; V04 tmp1 [V04,T05] ( 3, 1.50) int -> x2 "Inline return value spill temp"
+; V05 tmp2 [V05,T06] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T07] ( 3, 1.50) int -> x2 "Inline return value spill temp"
+; V07 tmp4 [V07,T08] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T02] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref
+;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp9 [V12,T03] ( 2, 2 ) int -> x0 "argument with side effect"
+; V13 cse0 [V13,T09] ( 3, 1.50) long -> x21 "CSE - moderate"
+; V14 cse1 [V14,T10] ( 3, 1.50) long -> x20 "CSE - moderate"
;
; Lcl frame size = 8
@@ -48,13 +46,15 @@ G_M17935_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=24 bbWeight=1 PerfScore 4.00
G_M17935_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w0, [x19, #0x20]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ldr w0, [x20, #0x20]
and w2, w0, #63
cbz w2, G_M17935_IG04
b G_M17935_IG05
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M17935_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M17935_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x20
; gcrRegs +[x0]
mov w1, #63
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -65,32 +65,32 @@ G_M17935_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
sxtw w2, w0
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M17935_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M17935_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w2, #21
bne G_M17935_IG06
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x20, [x1, #0x60]
ldr x1, [x20]
+ ldr x21, [x1, #0x60]
+ ldr x1, [x21]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M17935_IG09
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x20, #0x08]
+ ldr x1, [x21, #0x08]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M17935_IG09
;; size=48 bbWeight=0.50 PerfScore 9.25
-G_M17935_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x20]
+G_M17935_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x20, #0x20]
and w2, w0, #63
cbz w2, G_M17935_IG07
b G_M17935_IG08
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M17935_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
+G_M17935_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x20
; gcrRegs +[x0]
mov w1, #63
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -101,10 +101,10 @@ G_M17935_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
sxtw w2, w0
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M17935_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M17935_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w2, #20
blt G_M17935_IG09
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:get_IsDelegate():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
@@ -114,8 +114,8 @@ G_M17935_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
cbz w0, G_M17935_IG10
;; size=36 bbWeight=0.50 PerfScore 4.25
-G_M17935_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+G_M17935_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:get_HasInstantiation():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
@@ -139,13 +139,13 @@ G_M17935_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
cbz w0, G_M17935_IG10
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
+ ldr x1, [x20]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x38]
blr x1
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x20]
cbnz w0, G_M17935_IG10
mov x0, x19
; gcrRegs +[x0]
@@ -188,7 +188,7 @@ G_M17935_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 432, prolog size 16, PerfScore 69.25, instruction count 108, allocated bytes for code 432 (MethodHash=05dcb9f0) for method Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
+; Total bytes of code 436, prolog size 16, PerfScore 69.50, instruction count 109, allocated bytes for code 436 (MethodHash=05dcb9f0) for method Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -199,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+1.67%) : 226661.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
@@ -8,27 +8,26 @@
; 2 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.ColumnTypeConverter>
-; V01 arg1 [V01,T11] ( 3, 2.50) ref -> x1 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
-; V02 arg2 [V02,T12] ( 3, 2.50) ref -> x2 class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T01] ( 8, 25.02) ref -> x19 class-hnd single-def <System.Object>
-; V04 loc0 [V04,T04] ( 8, 21.50) int -> x20
+; V00 this [V00,T09] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.ColumnTypeConverter>
+; V01 arg1 [V01,T10] ( 3, 2.50) ref -> x1 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V02 arg2 [V02,T11] ( 3, 2.50) ref -> x2 class-hnd single-def <System.Globalization.CultureInfo>
+; V03 arg3 [V03,T06] ( 7, 9.88) ref -> x19 class-hnd single-def <System.Object>
+; V04 loc0 [V04,T03] ( 8, 21.50) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V06 tmp1 [V06,T12] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V07 tmp2 [V07,T00] ( 6, 62.03) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-;* V09 tmp4 [V09,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V10 tmp5 [V10,T07] ( 2, 8 ) byref -> x3 "impAppendStmt"
+; V08 tmp3 [V08,T04] ( 4, 20.77) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.String>
+; V09 tmp4 [V09,T07] ( 2, 8 ) byref -> x3 "impAppendStmt"
+;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T02] ( 3, 24.00) ref -> x0 "arr expr"
-; V17 tmp12 [V17,T03] ( 3, 24.00) ref -> x0 "argument with side effect"
-; V18 tmp13 [V18,T13] ( 3, 3 ) ref -> x0 single-def "arr expr"
-;* V19 cse0 [V19,T09] ( 0, 0 ) long -> zero-ref multi-def "CSE - aggressive"
-; V20 cse1 [V20,T06] ( 7, 14 ) long -> x21 multi-def "CSE - aggressive"
+; V15 tmp10 [V15,T01] ( 3, 24.00) ref -> x0 "arr expr"
+; V16 tmp11 [V16,T02] ( 3, 24.00) ref -> x0 "argument with side effect"
+; V17 tmp12 [V17,T13] ( 3, 3 ) ref -> x0 single-def "arr expr"
+;* V18 cse0 [V18,T08] ( 0, 0 ) long -> zero-ref multi-def "CSE - aggressive"
+; V19 cse1 [V19,T05] ( 7, 14 ) long -> x21 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -42,7 +41,7 @@ G_M21223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 4.00
G_M21223_IG02: ; bbWeight=1, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- cbz x19, G_M21223_IG15
+ cbz x19, G_M21223_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x3, [x19]
@@ -50,14 +49,14 @@ G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
cmp x3, x4
- bne G_M21223_IG15
+ bne G_M21223_IG16
mov w20, wzr
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
- tbz w0, #0, G_M21223_IG18
+ tbz w0, #0, G_M21223_IG19
;; size=48 bbWeight=0.50 PerfScore 6.00
G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1-x2]
@@ -69,14 +68,14 @@ G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, #0
- ble G_M21223_IG10
+ ble G_M21223_IG11
;; size=28 bbWeight=0.50 PerfScore 4.50
G_M21223_IG05: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M21223_IG17
+ bhs G_M21223_IG18
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -90,21 +89,27 @@ G_M21223_IG05: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcr arg pop 0
ldrsb wzr, [x0]
cmp x0, x19
- beq G_M21223_IG12
+ beq G_M21223_IG13
;; size=52 bbWeight=4.00 PerfScore 102.00
-G_M21223_IG06: ; bbWeight=15.02, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG06: ; bbWeight=1.88, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ cbz x1, G_M21223_IG09
+ ;; size=8 bbWeight=1.88 PerfScore 2.82
+G_M21223_IG07: ; bbWeight=15.02, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
- cmp w2, w1
- bne G_M21223_IG08
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
+ bne G_M21223_IG09
;; size=16 bbWeight=15.02 PerfScore 112.63
-G_M21223_IG07: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG08: ; bbWeight=2, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
add x3, x0, #12
; byrRegs +[x3]
ldr w2, [x0, #0x08]
lsl w2, w2, #1
mov w2, w2
- add x1, x19, #12
+ add x1, x1, #12
+ ; gcrRegs -[x1]
; byrRegs +[x1]
mov x0, x3
; gcrRegs -[x0]
@@ -117,17 +122,17 @@ G_M21223_IG07: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
blr x3
; byrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M21223_IG12
+ cbnz w0, G_M21223_IG13
;; size=48 bbWeight=2 PerfScore 25.00
-G_M21223_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w20, w20, #1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
- tbz w0, #0, G_M21223_IG19
+ tbz w0, #0, G_M21223_IG20
;; size=24 bbWeight=4 PerfScore 24.00
-G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -138,26 +143,26 @@ G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp w0, w20
bgt G_M21223_IG05
;; size=28 bbWeight=4 PerfScore 36.00
-G_M21223_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21223_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M21223_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w2, [x0]
- tbz w2, #0, G_M21223_IG20
+ tbz w2, #0, G_M21223_IG21
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -165,7 +170,7 @@ G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M21223_IG17
+ bhs G_M21223_IG18
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -173,13 +178,13 @@ G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 6.25
-G_M21223_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M21223_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1-x2 x19]
mov x3, x19
; gcrRegs +[x3]
@@ -188,19 +193,19 @@ G_M21223_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x4
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M21223_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x3 x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M21223_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21223_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -210,16 +215,16 @@ G_M21223_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
b G_M21223_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-G_M21223_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21223_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #54
bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
- b G_M21223_IG09
+ b G_M21223_IG10
;; size=24 bbWeight=0 PerfScore 0.00
-G_M21223_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21223_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -227,10 +232,10 @@ G_M21223_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w1, #54
bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
- b G_M21223_IG13
+ b G_M21223_IG14
;; size=24 bbWeight=0 PerfScore 0.00
...
+4 (+2.63%) : 182804.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> x1 class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.96) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.35) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.22) byref -> x0 single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.96) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.35) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.22) byref -> x0 single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -51,12 +50,13 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ cbz x1, G_M57556_IG04
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
ldr x1, [x1, #0x08]
cmp x2, x1
beq G_M57556_IG13
- ;; size=16 bbWeight=0.50 PerfScore 3.75
+ ;; size=20 bbWeight=0.50 PerfScore 4.25
G_M57556_IG07: ; bbWeight=0.44, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbz x2, G_M57556_IG12
@@ -100,7 +100,7 @@ G_M57556_IG13: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
b G_M57556_IG11
;; size=8 bbWeight=0.06 PerfScore 0.10
-; Total bytes of code 152, prolog size 8, PerfScore 19.29, instruction count 38, allocated bytes for code 152 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 19.79, instruction count 39, allocated bytes for code 156 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +111,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.linux.arm64.Release.mch
-28 (-46.67%) : 617877.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,12 +8,10 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 436
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.50 PerfScore 5.25
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 632034.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,12 +8,10 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5491
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.50 PerfScore 5.25
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-35.29%) : 58942.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)
@@ -7,12 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x2 this single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x2 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,38 +17,25 @@ G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str x1, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- ldr x2, [x0]
- ; gcrRegs +[x2]
- mov x0, x2
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- cbz x0, G_M64707_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x08]
- cmp x3, x1
- beq G_M64707_IG05
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- mov x1, x2
+ mov x2, x0
+ ; byrRegs +[x2]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
+ ldr x0, [x1, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x08]
+ ldr x1, [x2]
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M64707_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1] +[x0]
+ ; byrRegs -[x2]
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 12, PerfScore 12.62, instruction count 17, allocated bytes for code 68 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 44, prolog size 12, PerfScore 18.00, instruction count 11, allocated bytes for code 44 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -62,7 +46,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+8.33%) : 702972.dasm - System.Collections.Immutable.ImmutableDictionary2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
@@ -8,76 +8,75 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 6, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
-; V02 arg1 [V02,T01] ( 5, 4 ) byref -> x19 single-def
-; V03 loc0 [V03,T04] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
+; V00 TypeCtx [V00,T00] ( 6, 4 ) long -> x19 single-def
+; V01 arg0 [V01,T02] ( 4, 3 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
+; V02 arg1 [V02,T01] ( 5, 4 ) byref -> x20 single-def
+; V03 loc0 [V03,T03] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 6, 9 ) ref -> x15 class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 0 ) long -> x0 "argument with side effect"
-; V08 rat0 [V08,T05] ( 3, 0 ) long -> x0 "runtime lookup"
-; V09 rat1 [V09,T06] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp2 [V06,T06] ( 2, 0 ) long -> x0 "argument with side effect"
+; V07 rat0 [V07,T04] ( 3, 0 ) long -> x0 "runtime lookup"
+; V08 rat1 [V08,T05] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M59789_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x0, [fp, #0x18]
- mov x20, x1
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M59789_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x15, x20
+ str x0, [fp, #0x10]
+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M59789_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x0, x19
+ mov x1, x21
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ mov x15, x0
; gcrRegs +[x15]
- cbz x15, G_M59789_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59789_IG03: ; bbWeight=0.50, gcrefRegs=108000 {x15 x20}, byrefRegs=80000 {x19}, byref
- ldr x14, [x15]
- cmp x14, x0
- csel x15, x15, xzr, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M59789_IG04: ; bbWeight=1, gcrefRegs=108000 {x15 x20}, byrefRegs=80000 {x19}, byref, isz
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x1, [x19]
- ; gcrRegs +[x1]
- cbz x1, G_M59789_IG06
+ ldr x0, [x20]
+ ; gcrRegs +[x0]
+ cbz x0, G_M59789_IG04
mov w0, #1
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M59789_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=1 PerfScore 8.50
+G_M59789_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M59789_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x2, [x1, #0x50]
- cbz x2, G_M59789_IG07
- mov x0, x2
- b G_M59789_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M59789_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M59789_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, gcvars, byref, isz
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x50]
+ cbz x0, G_M59789_IG05
+ b G_M59789_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M59789_IG05: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+ mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M59789_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x1, x20
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M59789_IG06: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x1, x21
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1 x20] +[x0]
- cbz x0, G_M59789_IG10
+ ; gcrRegs -[x1 x21] +[x0]
+ cbz x0, G_M59789_IG08
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:ToImmutable():System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -85,28 +84,30 @@ G_M59789_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
blr x1
mov x15, x0
; gcrRegs +[x15]
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x19]
+ ; byrRegs -[x14 x20]
mov w0, #1
;; size=48 bbWeight=0 PerfScore 0.00
-G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+G_M59789_IG07: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M59789_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M59789_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M59789_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 17.00, instruction count 48, allocated bytes for code 192 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
+; Total bytes of code 208, prolog size 20, PerfScore 19.50, instruction count 52, allocated bytes for code 208 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -117,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -131,10 +132,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+16 (+10.00%) : 472230.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
@@ -11,13 +11,11 @@
;
; V00 this [V00,T02] ( 4, 3 ) ref -> x0 this class-hnd <OLEDB.Test.ModuleCore.CTestCase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <OLEDB.Test.ModuleCore.CTestModule>
-; V05 tmp4 [V05,T07] ( 2, 0 ) ref -> x0 single-def "arg temp"
-; V06 cse0 [V06,T05] ( 4, 3 ) ref -> x19 "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 3, 4 ) ref -> x1 "Spilling to split statement for tree"
-; V08 rat1 [V08,T01] ( 6, 7 ) ref -> x2 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V02 tmp1 [V02,T05] ( 2, 0 ) ref -> x0 single-def "arg temp"
+; V03 cse0 [V03,T04] ( 5, 3 ) ref -> x19 "CSE - aggressive"
+; V04 rat0 [V04,T03] ( 3, 4 ) ref -> x1 "Spilling to split statement for tree"
+; V05 rat1 [V05,T00] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V06 rat2 [V06,T01] ( 5, 7 ) ref -> x0 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
;
; Lcl frame size = 8
@@ -38,38 +36,42 @@ G_M5100_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
;; size=16 bbWeight=1 PerfScore 5.00
G_M5100_IG03: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- cbz x2, G_M5100_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M5100_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- mov x1, x19
- ; gcrRegs +[x1]
- mov x0, x1
+ cbz x2, G_M5100_IG07
+ mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M5100_IG07
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M5100_IG05: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
- beq G_M5100_IG07
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M5100_IG06: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M5100_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ cbnz x0, G_M5100_IG05
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M5100_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x2 x19]
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M5100_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5100_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
+ ldr x1, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ beq G_M5100_IG04
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M5100_IG06: ; bbWeight=0.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M5100_IG10
+ ;; size=4 bbWeight=0.14 PerfScore 0.14
+G_M5100_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[x1 x19] +[x0]
+ ; gcr arg pop 0
+ b G_M5100_IG02
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M5100_IG08: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x1-x2 x19]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
@@ -78,7 +80,7 @@ G_M5100_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000
cmp x0, x3
beq G_M5100_IG03
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M5100_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M5100_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -88,7 +90,7 @@ G_M5100_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- cbnz x2, G_M5100_IG04
+ b G_M5100_IG03
;; size=24 bbWeight=0 PerfScore 0.00
G_M5100_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2]
@@ -100,10 +102,10 @@ G_M5100_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
- b G_M5100_IG02
+ b G_M5100_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 20.88, instruction count 40, allocated bytes for code 160 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 20.14, instruction count 44, allocated bytes for code 176 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
Unwind Info:
@@ -114,7 +116,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+12.50%) : 248806.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -9,47 +9,58 @@
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 11, 6.77) ref -> x19 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 11, 6.66) ref -> x19 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,T10] ( 3, 1.77) ref -> x0 "guarded devirt return temp"
+; V02 tmp1 [V02,T09] ( 3, 1.77) ref -> x0 "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,T07] ( 3, 2 ) ubyte -> x1 "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 ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T08] ( 3, 2 ) int -> x22
-; V09 tmp8 [V09,T09] ( 2, 2 ) ubyte -> x1 "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T01] ( 2, 4 ) byref -> x22 single-def "Inlining Arg"
-;* V13 tmp12 [V13,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T05] ( 3, 3 ) long -> x22 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T02] ( 3, 2.89) long -> x20 "CSE - aggressive"
-; V18 cse1 [V18,T03] ( 3, 2.89) long -> x21 "CSE - aggressive"
-; V19 cse2 [V19,T06] ( 3, 3 ) int -> x0 "CSE - moderate"
+; V04 tmp3 [V04,T06] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T07] ( 3, 2 ) int -> x21
+; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> x1 "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> x21 single-def "Inlining Arg"
+;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) long -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) long -> x21 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 cse0 [V15,T05] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> x20 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M8853_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x20, x21
- bne G_M8853_IG14
- ldr x22, [x19, #0x18]
- and w0, w22, #2
- cbnz w0, G_M8853_IG13
+ ldrsb wzr, [x19]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ cbz x20, G_M8853_IG05
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M8853_IG05
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M8853_IG17
+ ldr x21, [x20, #0x18]
+ and w0, w21, #2
+ cbnz w0, G_M8853_IG16
cmp w0, #0
cset x0, eq
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -57,38 +68,43 @@ G_M8853_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ldr w0, [x22]
+ ldr w0, [x21]
and w0, w0, #0xD1FFAB1E
cmp w0, #192, LSL #12
- cset x22, eq
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- uxtb w1, w22
+ cset x21, eq
+ ;; size=60 bbWeight=1 PerfScore 16.50
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ uxtb w1, w21
;; size=4 bbWeight=1 PerfScore 0.50
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbnz w1, G_M8853_IG10
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ cbnz w1, G_M8853_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG05: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG08: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x19, x0
- bne G_M8853_IG08
+ bne G_M8853_IG11
;; size=20 bbWeight=0.89 PerfScore 2.66
-G_M8853_IG06: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG09: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, xzr
;; size=4 bbWeight=0.49 PerfScore 0.24
-G_M8853_IG07: ; bbWeight=0.49, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+G_M8853_IG10: ; bbWeight=0.49, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.49 PerfScore 1.95
-G_M8853_IG08: ; bbWeight=0.89, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.49 PerfScore 2.44
+G_M8853_IG11: ; bbWeight=0.89, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
- cmp x20, x21
- bne G_M8853_IG12
+ ldr x0, [x19]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ bne G_M8853_IG15
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -97,26 +113,26 @@ G_M8853_IG08: ; bbWeight=0.89, gcVars=0000000000000000 {}, gcrefRegs=8000
ldr x1, [x1]
blr x1
; gcrRegs -[x19]
- ;; size=32 bbWeight=0.89 PerfScore 6.64
-G_M8853_IG09: ; bbWeight=0.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+ ;; size=48 bbWeight=0.89 PerfScore 10.62
+G_M8853_IG12: ; bbWeight=0.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.89 PerfScore 3.54
-G_M8853_IG10: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.89 PerfScore 4.43
+G_M8853_IG13: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.11 PerfScore 0.17
-G_M8853_IG11: ; bbWeight=0.11, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+G_M8853_IG14: ; bbWeight=0.11, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.11 PerfScore 0.46
-G_M8853_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.11 PerfScore 0.57
+G_M8853_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -125,14 +141,15 @@ G_M8853_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
ldr x1, [x1, #0x20]
blr x1
; gcrRegs -[x19]
- b G_M8853_IG09
+ b G_M8853_IG12
;; size=24 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov w22, wzr
- b G_M8853_IG03
+G_M8853_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x19-x20]
+ mov w21, wzr
+ b G_M8853_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M8853_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M8853_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x19]
@@ -142,10 +159,10 @@ G_M8853_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs -[x0]
tst w0, #32
cset x1, ne
- b G_M8853_IG04
+ b G_M8853_IG07
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 16, PerfScore 42.66, instruction count 72, allocated bytes for code 288 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 324, prolog size 16, PerfScore 50.76, instruction count 81, allocated bytes for code 324 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -156,7 +173,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 81 (0x00051) Actual length = 324 (0x000144)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,10 +187,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-28 (-46.67%) : 141038.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 34880.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,37 +18,19 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M24927_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M24927_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M24927_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-40.00%) : 30445.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
-; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,33 +19,21 @@ G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x1, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2
- ; gcrRegs +[x0]
- cbz x0, G_M29555_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- cmp x3, x1
- beq G_M29555_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
+ ldr x0, [x1, #0x38]
+ ldr x0, [x0]
mov x1, x2
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -58,7 +44,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+43.48%) : 92799.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)
@@ -8,26 +8,25 @@
; 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 -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
-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
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08]
; gcrRegs +[x0-x1]
ldrsb wzr, [x0]
@@ -38,11 +37,9 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)
@@ -50,26 +47,41 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
- brk_unix #0
- ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ;; size=104 bbWeight=1 PerfScore 32.50
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x2
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (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 : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
+40 (+43.48%) : 95139.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)
@@ -8,26 +8,25 @@
; 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 -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
-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
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08]
; gcrRegs +[x0-x1]
ldrsb wzr, [x0]
@@ -38,11 +37,9 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)
@@ -50,26 +47,41 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
- brk_unix #0
- ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ;; size=104 bbWeight=1 PerfScore 32.50
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x2
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (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 : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
+48 (+92.31%) : 93158.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,24 +8,24 @@
; 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 -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 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 -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V06 cse0 [V06,T02] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V04 cse0 [V04,T02] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
- ldrsb wzr, [x0]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -35,26 +35,46 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- brk_unix #0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ mov w1, wzr
+ movz x3, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ ;; size=76 bbWeight=1 PerfScore 20.00
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x3
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 52, prolog size 8, PerfScore 0.00, instruction count 13, allocated bytes for code 52 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 26.50, instruction count 25, allocated bytes for code 100 (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
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ ---- Epilog start at index 1 ----
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
realworld.run.linux.arm64.checked.mch
-24 (-31.58%) : 31250.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,34 +21,22 @@ G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M56342_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M56342_IG05
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56342_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (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 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (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:
@@ -61,7 +47,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 435.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-25.93%) : 18805.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x20]
mov fp, sp
str x1, [fp, #0x18]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [x1, #0x38]
+ ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
- ldr x2, [x20]
+ mov x0, x19
+ ldr x2, [x19]
ldr x2, [x2, #0x70]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M60617_IG05
- ;; size=44 bbWeight=1 PerfScore 19.50
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M60617_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 30407.dasm - System.Dynamic.Utils.TypeUtils:IsIntegerOrBool(System.Type):ubyte (FullOpts)
@@ -9,23 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 7 ) ref -> x19 class-hnd <System.Type>
-; V01 loc0 [V01,T01] ( 3, 1.50) int -> x0
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 1 ) int -> x0 "Inline return value spill temp"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V03 tmp1 [V03,T01] ( 3, 1.50) int -> x0 "Inline return value spill temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "index expr"
;
; Lcl frame size = 8
+0 (0.00%) : 32820.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitILConstant(System.Type):ubyte (FullOpts)
@@ -9,24 +9,19 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Type>
-; V01 loc0 [V01,T02] ( 3, 3 ) int -> x19
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T00] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type>
-; V04 tmp2 [V04,T03] ( 3, 2 ) int -> x19 "Inline return value spill temp"
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V04 tmp2 [V04,T02] ( 4, 3 ) int -> x19 "Inline return value spill temp"
+;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V13 tmp11 [V13 ] ( 0, 0 ) int -> zero-ref "index expr"
;
; Lcl frame size = 8
+16 (+4.35%) : 5235.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
@@ -16,27 +16,27 @@
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall"
-;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall"
-;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect"
-; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect"
-; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive"
-; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
-; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect"
+; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect"
+; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect"
+; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect"
+; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect"
+; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive"
+; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup"
+; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
+; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
+; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup"
+; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
+; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG13
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16
- b G_M31693_IG17
+ cbz x0, G_M31693_IG14
+ b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20
- b G_M31693_IG21
+ cbz x0, G_M31693_IG17
+ b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
@@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -206,7 +200,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
smoke_tests.nativeaot.linux.arm64.checked.mch
-24 (-30.00%) : 6694.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:b_11(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
@@ -9,12 +9,9 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V02 arg2 [V02,T01] ( 4, 4 ) ref -> x2 class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T00] ( 4, 4 ) ref -> x2 class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V06 tmp2 [V06,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;
; Lcl frame size = 0
@@ -24,43 +21,28 @@ G_M14484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M14484_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w0, #0
- bls G_M14484_IG07
+ ldr w1, [x2, #0x08]
+ cmp w1, #0
+ bls G_M14484_IG04
ldr x1, [x2, #0x10]
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M14484_IG05
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M14484_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- ldr x2, [x0]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
- add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x2, x3
- beq G_M14484_IG05
- ;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M14484_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M14484_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2] +[x0]
bl <unknown method>
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M14484_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 10.50
+G_M14484_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M14484_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14484_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.06, instruction count 20, allocated bytes for code 80 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
; ============================================================
Cfi Info:
-24 (-30.00%) : 9928.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.Canon]:b11_1(System.Object):this (FullOpts)
@@ -7,11 +7,9 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,38 +21,24 @@ G_M10356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M10356_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M10356_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M10356_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M10356_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x30]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M10356_IG05
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M10356_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x30]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M10356_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
ldr wzr, [x0]
bl System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this
; gcrRegs -[x0]
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M10356_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 14.00
+G_M10356_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 80, prolog size 16, PerfScore 17.06, instruction count 20, allocated bytes for code 80 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
+; Total bytes of code 56, prolog size 16, PerfScore 22.00, instruction count 14, allocated bytes for code 56 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
; ============================================================
Cfi Info:
-24 (-28.57%) : 252.dasm - System.Runtime.CompilerServices.StrongBox`1[System._Canon]:System.Runtime.CompilerServices.IStrongBox.setValue(System.Object):this (FullOpts)
@@ -7,11 +7,9 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x15 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,43 +21,28 @@ G_M28067_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M28067_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28067_IG03: ; bbWeight=0.25, gcrefRegs=88002 {x1 x15 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- ldr x2, [x19]
- ldr x2, [x2, #0x30]
- ldr x2, [x2]
- cmp x0, x2
- beq G_M28067_IG05
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M28067_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ ldr x0, [x19]
+ ldr x0, [x0, #0x30]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x15, x0
- ; gcrRegs +[x15]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M28067_IG05: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
add x14, x19, #8
; byrRegs +[x14]
+ mov x15, x0
+ ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28067_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=28 bbWeight=1 PerfScore 12.00
+G_M28067_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 14.62, instruction count 21, allocated bytes for code 84 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 20.00, instruction count 15, allocated bytes for code 60 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
; ============================================================
Cfi Info:
+0 (0.00%) : 8063.dasm - System.Linq.Enumerable:SelectSystem.Canon,System.Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,23 +8,22 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T00] ( 15, 9.50) long -> x19 single-def
-; V01 arg0 [V01,T01] ( 10, 7 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T02] ( 9, 6.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T03] ( 10, 6 ) ref -> x21 class-hnd exact single-def <System.Func`2[System.__Canon,System.__Canon]>
; V03 loc0 [V03,T09] ( 5, 3 ) ref -> x22 class-hnd single-def <System.Linq.Enumerable+Iterator`1[System.__Canon]>
-; V04 loc1 [V04,T13] ( 3, 1.50) ref -> x22 class-hnd single-def <System.Collections.Generic.IList`1[System.__Canon]>
-; V05 loc2 [V05,T14] ( 3, 1.50) ref -> x2 class-hnd single-def <System.Linq.IPartition`1[System.__Canon]>
-; V06 loc3 [V06,T11] ( 4, 2 ) ref -> x23 class-hnd single-def <System.__Canon[]>
-;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V04 loc1 [V04,T12] ( 3, 1.50) ref -> x22 class-hnd single-def <System.Collections.Generic.IList`1[System.__Canon]>
+; V05 loc2 [V05,T13] ( 3, 1.50) ref -> x2 class-hnd single-def <System.Linq.IPartition`1[System.__Canon]>
+; V06 loc3 [V06,T10] ( 4, 2 ) ref -> x23 class-hnd single-def <System.__Canon[]>
+; V07 loc4 [V07,T14] ( 3, 1.50) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
; V08 loc5 [V08 ] ( 4, 2 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T04] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectEnumerableIterator`2[System.__Canon,System.__Canon]>
-; V11 tmp2 [V11,T10] ( 3, 3 ) ref -> x20 class-hnd exact "spilling QMark2" <System.Collections.Generic.List`1[System.__Canon]>
-; V12 tmp3 [V12,T05] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]>
-; V13 tmp4 [V13,T06] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]>
-; V14 tmp5 [V14,T07] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]>
-; V15 tmp6 [V15,T08] ( 5, 3.20) long -> x2 "VirtualCall through function pointer"
-; V16 tmp7 [V16,T12] ( 3, 2 ) ref -> x0 "calli"
-; V17 tmp8 [V17,T02] ( 8, 9 ) ref -> x0 "Single return block return value"
+; V11 tmp2 [V11,T05] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]>
+; V12 tmp3 [V12,T06] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]>
+; V13 tmp4 [V13,T07] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]>
+; V14 tmp5 [V14,T08] ( 5, 3.20) long -> x2 "VirtualCall through function pointer"
+; V15 tmp6 [V15,T11] ( 3, 2 ) ref -> x0 "calli"
+; V16 tmp7 [V16,T01] ( 8, 9 ) ref -> x0 "Single return block return value"
;
; Lcl frame size = 24
@@ -118,37 +117,41 @@ G_M24041_IG08: ; bbWeight=0.50, gcrefRegs=A00000 {x21 x23}, byrefRegs=000
ldr x0, [x19, #0x28]
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
+ mov x19, x0
+ ; gcrRegs +[x19]
bl System.Threading.ManagedThreadId:get_Current():int
; gcrRegs -[x0]
- str w0, [x20, #0x10]
- add x14, x20, #24
+ str w0, [x19, #0x10]
+ add x14, x19, #24
; byrRegs +[x14]
mov x15, x23
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x23]
; byrRegs -[x14]
- add x14, x20, #32
+ add x14, x19, #32
; byrRegs +[x14]
mov x15, x21
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x21]
; byrRegs -[x14]
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
b G_M24041_IG13
;; size=52 bbWeight=0.50 PerfScore 6.00
G_M24041_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x21-x22]
- ldr x0, [x20]
- ldr x1, [x19, #0x18]
- cmp x0, x1
- csel x20, x20, xzr, eq
+ ; gcrRegs -[x0 x19] +[x20-x22]
+ ldr x0, [x19, #0x18]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1 x20] +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
cbz x20, G_M24041_IG10
ldr x0, [x19, #0x30]
+ ; gcrRegs -[x0]
bl CORINFO_HELP_NEWSFAST
; gcrRegs -[x22] +[x0]
mov x19, x0
@@ -173,7 +176,7 @@ G_M24041_IG09: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
mov x0, x19
; gcrRegs +[x0]
b G_M24041_IG13
- ;; size=72 bbWeight=0.50 PerfScore 10.00
+ ;; size=72 bbWeight=0.50 PerfScore 9.00
G_M24041_IG10: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] +[x21-x22]
ldr x0, [x19, #0x38]
@@ -273,7 +276,7 @@ G_M24041_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 508, prolog size 24, PerfScore 73.50, instruction count 127, allocated bytes for code 508 (MethodHash=3db4a216) for method System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 508, prolog size 24, PerfScore 72.50, instruction count 127, allocated bytes for code 508 (MethodHash=3db4a216) for method System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================
Cfi Info:
+0 (0.00%) : 8087.dasm - System.Linq.Enumerable:WhereSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,17 +8,16 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T00] ( 10, 7 ) long -> x19 single-def
-; V01 arg0 [V01,T01] ( 8, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T01] ( 7, 5.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T02] ( 7, 5 ) ref -> x21 class-hnd exact single-def <System.Func`2[System.__Canon,ubyte]>
; V03 loc0 [V03,T07] ( 4, 3 ) ref -> x0 class-hnd single-def <System.Linq.Enumerable+Iterator`1[System.__Canon]>
-; V04 loc1 [V04,T09] ( 4, 2 ) ref -> x22 class-hnd single-def <System.__Canon[]>
-;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V04 loc1 [V04,T08] ( 4, 2 ) ref -> x22 class-hnd single-def <System.__Canon[]>
+; V05 loc2 [V05,T09] ( 3, 1.50) ref -> x23 class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T08] ( 3, 3 ) ref -> x23 class-hnd exact "spilling QMark2" <System.Collections.Generic.List`1[System.__Canon]>
-; V08 tmp2 [V08,T03] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]>
-; V09 tmp3 [V09,T04] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]>
-; V10 tmp4 [V10,T05] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]>
-; V11 tmp5 [V11,T06] ( 4, 4 ) ref -> x23 "Single return block return value"
+; V07 tmp1 [V07,T03] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]>
+; V08 tmp2 [V08,T04] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]>
+; V09 tmp3 [V09,T05] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]>
+; V10 tmp4 [V10,T06] ( 4, 4 ) ref -> x23 "Single return block return value"
;
; Lcl frame size = 8
@@ -115,13 +114,17 @@ G_M9951_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=6000
;; size=48 bbWeight=0.50 PerfScore 5.75
G_M9951_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23] +[x20-x21]
- ldr x0, [x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- csel x23, x20, xzr, eq
+ ldr x0, [x19, #0x20]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
; gcrRegs +[x23]
cbz x23, G_M9951_IG09
ldr x0, [x19, #0x10]
+ ; gcrRegs -[x0]
bl CORINFO_HELP_NEWSFAST
; gcrRegs -[x20] +[x0]
; gcr arg pop 0
@@ -148,7 +151,7 @@ G_M9951_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000
mov x23, x19
; gcrRegs +[x23]
b G_M9951_IG10
- ;; size=72 bbWeight=0.50 PerfScore 10.00
+ ;; size=72 bbWeight=0.50 PerfScore 9.00
G_M9951_IG09: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x23] +[x20-x21]
ldr x0, [x19]
@@ -201,7 +204,7 @@ G_M9951_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 36, PerfScore 54.50, instruction count 89, allocated bytes for code 356 (MethodHash=a0c6d920) for method System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 356, prolog size 36, PerfScore 53.50, instruction count 89, allocated bytes for code 356 (MethodHash=a0c6d920) for method System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================
Cfi Info:
+0 (0.00%) : 18492.dasm - Generics+TestNativeLayoutGeneration:Run() (FullOpts)
@@ -9,10 +9,8 @@
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Generics+TestNativeLayoutGeneration+Used>
-;* V02 tmp2 [V02 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
-; V04 tmp4 [V04,T00] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
+; V02 tmp2 [V02,T00] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
;
; Lcl frame size = 8
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
96 |
91 |
0 |
5 |
-2,216 |
+0 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
2,026 |
2,020 |
5 |
1 |
-54,940 |
+116 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
36 |
32 |
4 |
0 |
-832 |
+48 |
| coreclr_tests.run.linux.arm64.checked.mch |
208 |
169 |
17 |
22 |
-4,532 |
+704 |
| libraries.crossgen2.linux.arm64.checked.mch |
1,097 |
1,087 |
3 |
7 |
-38,396 |
+12 |
| libraries.pmi.linux.arm64.checked.mch |
547 |
521 |
6 |
20 |
-16,672 |
+276 |
| libraries_tests.run.linux.arm64.Release.mch |
1,488 |
1,273 |
180 |
35 |
-35,272 |
+5,308 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
757 |
713 |
19 |
25 |
-23,040 |
+616 |
| realworld.run.linux.arm64.checked.mch |
123 |
116 |
1 |
6 |
-3,304 |
+16 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
90 |
84 |
0 |
6 |
-2,336 |
+0 |
|
6,468 |
6,106 |
235 |
127 |
-181,540 |
+7,096 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
31,329 |
3,148 |
28,181 |
239 (0.69%) |
3,523 (10.11%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
135,150 |
59,296 |
75,854 |
132 (0.09%) |
15,954 (10.56%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
70,528 |
53,989 |
16,539 |
82 (0.12%) |
679 (0.95%) |
| coreclr_tests.run.linux.arm64.checked.mch |
616,561 |
383,796 |
232,765 |
455 (0.07%) |
10,660 (1.70%) |
| libraries.crossgen2.linux.arm64.checked.mch |
234,176 |
15 |
234,161 |
0 (0.00%) |
7 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
265,338 |
6 |
265,332 |
1,913 (0.65%) |
29,705 (10.07%) |
| libraries_tests.run.linux.arm64.Release.mch |
693,749 |
489,338 |
204,411 |
1,326 (0.18%) |
41,063 (5.59%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
262,563 |
21,560 |
241,003 |
2,093 (0.69%) |
42,234 (13.86%) |
| realworld.run.linux.arm64.checked.mch |
28,480 |
85 |
28,395 |
338 (1.02%) |
4,623 (13.97%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
18,223 |
7 |
18,216 |
2 (0.01%) |
806 (4.24%) |
|
2,356,097 |
1,011,240 |
1,344,857 |
6,580 (0.26%) |
149,254 (5.96%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10766848 (overridden on cmd)
Total bytes of diff: 10764632 (overridden on cmd)
Total bytes of delta: -2216 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-128 : 8540.dasm (-3.64 % of base)
-80 : 2807.dasm (-1.64 % of base)
-80 : 7627.dasm (-10.15 % of base)
-48 : 6479.dasm (-10.53 % of base)
-44 : 6448.dasm (-4.60 % of base)
-44 : 23516.dasm (-16.18 % of base)
-40 : 20760.dasm (-12.50 % of base)
-40 : 19541.dasm (-4.81 % of base)
-40 : 21955.dasm (-8.06 % of base)
-40 : 9195.dasm (-9.43 % of base)
-36 : 779.dasm (-15.25 % of base)
-36 : 23379.dasm (-15.00 % of base)
-32 : 1380.dasm (-11.59 % of base)
-28 : 17531.dasm (-21.88 % of base)
-28 : 2738.dasm (-46.67 % of base)
-28 : 440.dasm (-28.00 % of base)
-28 : 5483.dasm (-10.29 % of base)
-28 : 1904.dasm (-25.93 % of base)
-28 : 14282.dasm (-2.14 % of base)
-28 : 19966.dasm (-4.27 % of base)
58 total files with Code Size differences (58 improved, 0 regressed), 5 unchanged.
Top method improvements (bytes):
-128 (-3.64 % of base) : 8540.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)
-80 (-10.15 % of base) : 7627.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)
-80 (-1.64 % of base) : 2807.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-48 (-10.53 % of base) : 6479.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-44 (-16.18 % of base) : 23516.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-4.60 % of base) : 6448.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-40 (-4.81 % of base) : 19541.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-40 (-12.50 % of base) : 20760.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-40 (-8.06 % of base) : 21955.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-40 (-9.43 % of base) : 9195.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-36 (-15.25 % of base) : 779.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-36 (-15.00 % of base) : 23379.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-32 (-11.59 % of base) : 1380.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (FullOpts)
-28 (-4.27 % of base) : 19966.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-28 (-12.73 % of base) : 21414.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-28 (-15.91 % of base) : 21291.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-28 (-10.29 % of base) : 5483.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
-28 (-21.88 % of base) : 17531.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-28 (-2.14 % of base) : 14282.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
-28 (-20.59 % of base) : 10174.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 2738.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 3663.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-28.00 % of base) : 440.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-25.93 % of base) : 1904.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-24 (-22.22 % of base) : 18924.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-28 (-21.88 % of base) : 17531.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-28 (-20.59 % of base) : 10174.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-20 (-20.00 % of base) : 13003.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-20 (-17.86 % of base) : 19751.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-20 (-17.24 % of base) : 981.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-24 (-16.67 % of base) : 31424.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
-24 (-16.22 % of base) : 8542.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-24 (-16.22 % of base) : 8320.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
-44 (-16.18 % of base) : 23516.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-16 (-16.00 % of base) : 6011.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-28 (-15.91 % of base) : 21291.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-36 (-15.25 % of base) : 779.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
-36 (-15.00 % of base) : 23379.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-24 (-14.63 % of base) : 12047.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-24 (-14.29 % of base) : 3848.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 62558804 (overridden on cmd)
Total bytes of diff: 62503980 (overridden on cmd)
Total bytes of delta: -54824 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
48 : 135400.dasm (2.54 % of base)
32 : 87389.dasm (1.80 % of base)
16 : 127173.dasm (6.90 % of base)
16 : 72602.dasm (6.90 % of base)
4 : 84074.dasm (0.18 % of base)
Top file improvements (bytes):
-396 : 85487.dasm (-8.60 % of base)
-60 : 132434.dasm (-12.71 % of base)
-56 : 95665.dasm (-5.43 % of base)
-56 : 94481.dasm (-5.32 % of base)
-48 : 95635.dasm (-14.63 % of base)
-48 : 95691.dasm (-8.39 % of base)
-44 : 15688.dasm (-9.91 % of base)
-44 : 24407.dasm (-9.91 % of base)
-32 : 24396.dasm (-6.35 % of base)
-32 : 15673.dasm (-6.35 % of base)
-28 : 13093.dasm (-3.30 % of base)
-28 : 16365.dasm (-5.15 % of base)
-28 : 18297.dasm (-3.30 % of base)
-28 : 25357.dasm (-3.30 % of base)
-28 : 5781.dasm (-3.30 % of base)
-28 : 9197.dasm (-3.30 % of base)
-28 : 13908.dasm (-28.00 % of base)
-28 : 23281.dasm (-3.30 % of base)
-28 : 85755.dasm (-2.01 % of base)
-28 : 14377.dasm (-3.30 % of base)
54 total files with Code Size differences (49 improved, 5 regressed), 1 unchanged.
Top method regressions (bytes):
48 (2.54 % of base) : 135400.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
32 (1.80 % of base) : 87389.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
16 (6.90 % of base) : 72602.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
16 (6.90 % of base) : 127173.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
4 (0.18 % of base) : 84074.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
Top method improvements (bytes):
-396 (-8.60 % of base) : 85487.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-60 (-12.71 % of base) : 132434.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-56 (-5.43 % of base) : 95665.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:Visit(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Binder):this (Tier1)
-56 (-5.32 % of base) : 94481.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-48 (-14.63 % of base) : 95635.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-48 (-8.39 % of base) : 95691.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-44 (-9.91 % of base) : 15688.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-44 (-9.91 % of base) : 24407.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-32 (-6.35 % of base) : 24396.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.35 % of base) : 15673.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-2.01 % of base) : 85755.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax] (Tier1)
-28 (-9.46 % of base) : 85476.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-8.24 % of base) : 80671.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-28 (-28.00 % of base) : 13908.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-3.30 % of base) : 13093.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-5.15 % of base) : 16365.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 18297.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 25357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 5781.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 9197.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
16 (6.90 % of base) : 72602.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
16 (6.90 % of base) : 127173.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
48 (2.54 % of base) : 135400.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
32 (1.80 % of base) : 87389.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
4 (0.18 % of base) : 84074.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
Top method improvements (percentages):
-28 (-28.00 % of base) : 13908.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-20 (-20.00 % of base) : 135003.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-24 (-17.14 % of base) : 80939.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-48 (-14.63 % of base) : 95635.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-13.64 % of base) : 94863.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-60 (-12.71 % of base) : 132434.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-24 (-10.71 % of base) : 95276.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-44 (-9.91 % of base) : 15688.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-44 (-9.91 % of base) : 24407.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-28 (-9.46 % of base) : 85476.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-396 (-8.60 % of base) : 85487.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-48 (-8.39 % of base) : 95691.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-8.24 % of base) : 80671.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-20 (-6.41 % of base) : 18200.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-32 (-6.35 % of base) : 24396.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.35 % of base) : 15673.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-56 (-5.43 % of base) : 95665.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:Visit(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Binder):this (Tier1)
-16 (-5.41 % of base) : 94968.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-56 (-5.32 % of base) : 94481.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-24 (-5.22 % of base) : 87896.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 28972948 (overridden on cmd)
Total bytes of diff: 28972164 (overridden on cmd)
Total bytes of delta: -784 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 68569.dasm (7.32 % of base)
12 : 24859.dasm (7.32 % of base)
12 : 63897.dasm (7.32 % of base)
12 : 69011.dasm (7.32 % of base)
Top file improvements (bytes):
-52 : 4073.dasm (-12.75 % of base)
-44 : 50535.dasm (-16.18 % of base)
-40 : 48722.dasm (-12.50 % of base)
-40 : 48325.dasm (-8.06 % of base)
-40 : 42188.dasm (-5.21 % of base)
-36 : 50439.dasm (-15.00 % of base)
-36 : 25886.dasm (-15.25 % of base)
-32 : 31480.dasm (-11.59 % of base)
-28 : 43651.dasm (-12.73 % of base)
-28 : 47270.dasm (-4.27 % of base)
-28 : 64364.dasm (-25.93 % of base)
-28 : 65019.dasm (-21.88 % of base)
-28 : 48720.dasm (-15.91 % of base)
-28 : 5355.dasm (-28.00 % of base)
-24 : 20398.dasm (-3.31 % of base)
-24 : 48473.dasm (-13.95 % of base)
-24 : 51056.dasm (-6.45 % of base)
-24 : 65015.dasm (-11.76 % of base)
-24 : 1563.dasm (-4.38 % of base)
-24 : 22900.dasm (-5.56 % of base)
36 total files with Code Size differences (32 improved, 4 regressed), 0 unchanged.
Top method regressions (bytes):
12 (7.32 % of base) : 68569.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
12 (7.32 % of base) : 69011.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
12 (7.32 % of base) : 24859.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
12 (7.32 % of base) : 63897.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (bytes):
-52 (-12.75 % of base) : 4073.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-44 (-16.18 % of base) : 50535.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-40 (-5.21 % of base) : 42188.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier1)
-40 (-12.50 % of base) : 48722.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-40 (-8.06 % of base) : 48325.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
-36 (-15.25 % of base) : 25886.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-36 (-15.00 % of base) : 50439.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-32 (-11.59 % of base) : 31480.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-28 (-4.27 % of base) : 47270.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
-28 (-12.73 % of base) : 43651.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-28 (-15.91 % of base) : 48720.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-28 (-28.00 % of base) : 5355.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-21.88 % of base) : 65019.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-28 (-25.93 % of base) : 64364.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-24 (-13.95 % of base) : 48473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-24 (-17.14 % of base) : 43689.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-24 (-13.04 % of base) : 39609.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-24 (-3.31 % of base) : 20398.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
-24 (-6.45 % of base) : 51056.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-24 (-5.56 % of base) : 22900.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
12 (7.32 % of base) : 68569.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
12 (7.32 % of base) : 69011.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
12 (7.32 % of base) : 24859.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
12 (7.32 % of base) : 63897.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (percentages):
-28 (-28.00 % of base) : 5355.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-25.93 % of base) : 64364.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-28 (-21.88 % of base) : 65019.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-20 (-20.00 % of base) : 24988.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-20 (-17.24 % of base) : 25920.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-24 (-17.14 % of base) : 43689.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-44 (-16.18 % of base) : 50535.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-15.91 % of base) : 48720.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-36 (-15.25 % of base) : 25886.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-36 (-15.00 % of base) : 50439.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-13.95 % of base) : 48473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-24 (-13.04 % of base) : 39609.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-52 (-12.75 % of base) : 4073.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-12.73 % of base) : 43651.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-40 (-12.50 % of base) : 48722.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-11.76 % of base) : 65015.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-32 (-11.59 % of base) : 31480.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-40 (-8.06 % of base) : 48325.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
-16 (-7.84 % of base) : 50912.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-24 (-6.45 % of base) : 51056.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
36 total methods with Code Size differences (32 improved, 4 regressed).
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 477091036 (overridden on cmd)
Total bytes of diff: 477087208 (overridden on cmd)
Total bytes of delta: -3828 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 430288.dasm (0.93 % of base)
112 : 430309.dasm (0.93 % of base)
108 : 559932.dasm (1.80 % of base)
64 : 149725.dasm (2.37 % of base)
60 : 526988.dasm (300.00 % of base)
60 : 143957.dasm (2.19 % of base)
52 : 253396.dasm (1.64 % of base)
36 : 254447.dasm (14.06 % of base)
28 : 253426.dasm (1.58 % of base)
12 : 274611.dasm (2.56 % of base)
12 : 420564.dasm (3.41 % of base)
12 : 572016.dasm (1.19 % of base)
12 : 424451.dasm (3.37 % of base)
8 : 418320.dasm (2.25 % of base)
8 : 417391.dasm (2.22 % of base)
4 : 424855.dasm (0.19 % of base)
4 : 421669.dasm (0.19 % of base)
Top file improvements (bytes):
-80 : 428665.dasm (-5.81 % of base)
-64 : 559390.dasm (-26.23 % of base)
-64 : 565405.dasm (-38.10 % of base)
-56 : 274414.dasm (-19.44 % of base)
-52 : 423078.dasm (-12.75 % of base)
-52 : 428571.dasm (-4.22 % of base)
-52 : 428664.dasm (-4.30 % of base)
-52 : 529459.dasm (-5.06 % of base)
-48 : 517891.dasm (-21.82 % of base)
-48 : 529488.dasm (-10.53 % of base)
-44 : 251002.dasm (-6.92 % of base)
-44 : 323290.dasm (-6.92 % of base)
-44 : 521304.dasm (-23.40 % of base)
-44 : 521305.dasm (-13.41 % of base)
-44 : 521316.dasm (-23.40 % of base)
-44 : 534681.dasm (-16.18 % of base)
-44 : 149144.dasm (-6.92 % of base)
-44 : 273420.dasm (-6.92 % of base)
-44 : 317921.dasm (-6.92 % of base)
-44 : 36547.dasm (-6.92 % of base)
61 total files with Code Size differences (44 improved, 17 regressed), 20 unchanged.
Top method regressions (bytes):
112 (0.93 % of base) : 430288.dasm - Program:TestCase0003() (FullOpts)
112 (0.93 % of base) : 430309.dasm - Program:TestCase0003() (FullOpts)
108 (1.80 % of base) : 559932.dasm - Test_throw2dimarray.App:Main():int (FullOpts)
64 (2.37 % of base) : 149725.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
60 (2.19 % of base) : 143957.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
60 (300.00 % of base) : 526988.dasm - T:TestEntryPoint():int (FullOpts)
52 (1.64 % of base) : 253396.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
36 (14.06 % of base) : 254447.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
28 (1.58 % of base) : 253426.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
12 (1.19 % of base) : 572016.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
12 (3.41 % of base) : 420564.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
12 (3.37 % of base) : 424451.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
12 (2.56 % of base) : 274611.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (2.25 % of base) : 418320.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
8 (2.22 % of base) : 417391.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
4 (0.19 % of base) : 424855.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
4 (0.19 % of base) : 421669.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
Top method improvements (bytes):
-80 (-5.81 % of base) : 428665.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-64 (-26.23 % of base) : 559390.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-64 (-38.10 % of base) : 565405.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-56 (-19.44 % of base) : 274414.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-52 (-4.30 % of base) : 428664.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-52 (-4.22 % of base) : 428571.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-52 (-5.06 % of base) : 529459.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-52 (-12.75 % of base) : 423078.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-48 (-10.53 % of base) : 529488.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-48 (-21.82 % of base) : 517891.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-44 (-16.18 % of base) : 534681.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-23.40 % of base) : 521316.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-13.41 % of base) : 521318.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-23.40 % of base) : 521304.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-13.41 % of base) : 521305.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-6.92 % of base) : 251002.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 323290.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 149144.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 273420.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 317921.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
Top method regressions (percentages):
60 (300.00 % of base) : 526988.dasm - T:TestEntryPoint():int (FullOpts)
36 (14.06 % of base) : 254447.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
12 (3.41 % of base) : 420564.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
12 (3.37 % of base) : 424451.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey:Equals(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ubyte:this (Tier1)
12 (2.56 % of base) : 274611.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
64 (2.37 % of base) : 149725.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
8 (2.25 % of base) : 418320.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
8 (2.22 % of base) : 417391.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
60 (2.19 % of base) : 143957.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
108 (1.80 % of base) : 559932.dasm - Test_throw2dimarray.App:Main():int (FullOpts)
52 (1.64 % of base) : 253396.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
28 (1.58 % of base) : 253426.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
12 (1.19 % of base) : 572016.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
112 (0.93 % of base) : 430288.dasm - Program:TestCase0003() (FullOpts)
112 (0.93 % of base) : 430309.dasm - Program:TestCase0003() (FullOpts)
4 (0.19 % of base) : 421669.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
4 (0.19 % of base) : 424855.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
Top method improvements (percentages):
-24 (-40.00 % of base) : 264269.dasm - Program:CastToArray(System.Object):int[] (Tier1)
-64 (-38.10 % of base) : 565405.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-24 (-28.57 % of base) : 623109.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-28.00 % of base) : 622800.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-28.00 % of base) : 1646.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-64 (-26.23 % of base) : 559390.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-24 (-24.00 % of base) : 626823.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-44 (-23.40 % of base) : 521316.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-23.40 % of base) : 521304.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-48 (-21.82 % of base) : 517891.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-21.21 % of base) : 623258.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-24 (-20.00 % of base) : 611748.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-20 (-20.00 % of base) : 569739.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-28 (-20.00 % of base) : 408805.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-56 (-19.44 % of base) : 274414.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-28 (-18.92 % of base) : 548010.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-28 (-18.92 % of base) : 225835.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-20 (-17.86 % of base) : 531506.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-32 (-17.78 % of base) : 273856.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-28 (-17.50 % of base) : 225829.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55776144 (overridden on cmd)
Total bytes of diff: 55737760 (overridden on cmd)
Total bytes of delta: -38384 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 136816.dasm (1.09 % of base)
4 : 179280.dasm (1.09 % of base)
4 : 34863.dasm (1.09 % of base)
Top file improvements (bytes):
-384 : 135805.dasm (-15.76 % of base)
-360 : 135804.dasm (-15.68 % of base)
-336 : 135802.dasm (-15.58 % of base)
-320 : 108113.dasm (-13.91 % of base)
-320 : 131502.dasm (-20.36 % of base)
-312 : 135800.dasm (-15.48 % of base)
-288 : 135798.dasm (-15.35 % of base)
-264 : 135796.dasm (-15.21 % of base)
-240 : 135794.dasm (-15.04 % of base)
-216 : 135792.dasm (-14.84 % of base)
-216 : 45514.dasm (-16.77 % of base)
-216 : 45513.dasm (-17.14 % of base)
-192 : 135790.dasm (-14.59 % of base)
-176 : 41951.dasm (-47.31 % of base)
-168 : 135788.dasm (-14.29 % of base)
-156 : 41966.dasm (-40.21 % of base)
-144 : 135616.dasm (-9.00 % of base)
-144 : 135786.dasm (-13.90 % of base)
-140 : 44431.dasm (-14.71 % of base)
-136 : 135768.dasm (-10.76 % of base)
70 total files with Code Size differences (67 improved, 3 regressed), 7 unchanged.
Top method regressions (bytes):
4 (1.09 % of base) : 136816.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 179280.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 34863.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
Top method improvements (bytes):
-384 (-15.76 % of base) : 135805.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)
-360 (-15.68 % of base) : 135804.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)
-336 (-15.58 % of base) : 135802.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)
-320 (-13.91 % of base) : 108113.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-320 (-20.36 % of base) : 131502.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-312 (-15.48 % of base) : 135800.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)
-288 (-15.35 % of base) : 135798.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)
-264 (-15.21 % of base) : 135796.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)
-240 (-15.04 % of base) : 135794.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)
-216 (-14.84 % of base) : 135792.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)
-216 (-17.14 % of base) : 45513.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-216 (-16.77 % of base) : 45514.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-192 (-14.59 % of base) : 135790.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)
-176 (-47.31 % of base) : 41951.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-168 (-14.29 % of base) : 135788.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)
-156 (-40.21 % of base) : 41966.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-144 (-13.90 % of base) : 135786.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)
-144 (-9.00 % of base) : 135616.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)
-140 (-14.71 % of base) : 44431.dasm - Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Equals(Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]):ubyte:this (FullOpts)
-136 (-10.76 % of base) : 135768.dasm - RailwaySharp.ErrorHandling.Trial:Apply[System.__Canon,System.__Canon,System.__Canon](RailwaySharp.ErrorHandling.Result`2[System.Func`2[System.__Canon,System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon] (FullOpts)
Top method regressions (percentages):
4 (1.09 % of base) : 136816.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 179280.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 34863.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
Top method improvements (percentages):
-176 (-47.31 % of base) : 41951.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-156 (-40.21 % of base) : 41966.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-36 (-34.62 % of base) : 45959.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
-36 (-34.62 % of base) : 45482.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-34.62 % of base) : 134191.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-33.33 % of base) : 108177.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 180325.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 35930.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 185698.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-36 (-32.14 % of base) : 233441.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)
-36 (-32.14 % of base) : 156515.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-32 (-30.77 % of base) : 134213.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-48 (-28.57 % of base) : 133515.dasm - System.Text.Json.Serialization.Converters.ArrayConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-36 (-28.12 % of base) : 231665.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 183078.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore+<>c[System.__Canon]:<ProcessAsyncIfNecessary_Slow>b__30_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 182929.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`3+<>c[System.__Canon,System.__Canon,System.__Canon]:<.ctor>b__7_4(System.Object,System.Threading.CancellationToken):this (FullOpts)
-36 (-28.12 % of base) : 183105.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<OfferAsyncIfNecessary>b__29_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 183133.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__49_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 183014.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 183098.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1+<>c[System.__Canon]:<ProcessAsyncIfNecessary_Slow>b__34_0(System.Object):this (FullOpts)
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55531484 (overridden on cmd)
Total bytes of diff: 55515088 (overridden on cmd)
Total bytes of delta: -16396 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
116 : 132460.dasm (4.83 % of base)
72 : 125621.dasm (2.65 % of base)
72 : 228025.dasm (1.35 % of base)
8 : 226661.dasm (1.67 % of base)
4 : 195691.dasm (0.93 % of base)
4 : 182804.dasm (2.63 % of base)
Top file improvements (bytes):
-600 : 253806.dasm (-25.17 % of base)
-320 : 247091.dasm (-16.74 % of base)
-320 : 110673.dasm (-19.00 % of base)
-264 : 290282.dasm (-36.46 % of base)
-184 : 84176.dasm (-23.00 % of base)
-184 : 84183.dasm (-22.22 % of base)
-168 : 154308.dasm (-8.33 % of base)
-168 : 154953.dasm (-42.00 % of base)
-120 : 84338.dasm (-18.99 % of base)
-120 : 84347.dasm (-18.29 % of base)
-116 : 9688.dasm (-11.07 % of base)
-116 : 194461.dasm (-2.01 % of base)
-80 : 239487.dasm (-1.67 % of base)
-72 : 154874.dasm (-34.62 % of base)
-72 : 276592.dasm (-13.74 % of base)
-72 : 227556.dasm (-6.32 % of base)
-72 : 184743.dasm (-14.88 % of base)
-68 : 276585.dasm (-14.17 % of base)
-64 : 228413.dasm (-23.88 % of base)
-60 : 80245.dasm (-22.06 % of base)
59 total files with Code Size differences (53 improved, 6 regressed), 20 unchanged.
Top method regressions (bytes):
116 (4.83 % of base) : 132460.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
72 (2.65 % of base) : 125621.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
72 (1.35 % of base) : 228025.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
8 (1.67 % of base) : 226661.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
4 (0.93 % of base) : 195691.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
4 (2.63 % of base) : 182804.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
Top method improvements (bytes):
-600 (-25.17 % of base) : 253806.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-320 (-16.74 % of base) : 247091.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-320 (-19.00 % of base) : 110673.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-264 (-36.46 % of base) : 290282.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-184 (-23.00 % of base) : 84176.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-184 (-22.22 % of base) : 84183.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-168 (-8.33 % of base) : 154308.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-168 (-42.00 % of base) : 154953.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-120 (-18.29 % of base) : 84347.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-120 (-18.99 % of base) : 84338.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-116 (-2.01 % of base) : 194461.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-116 (-11.07 % of base) : 9688.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-80 (-1.67 % of base) : 239487.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-72 (-6.32 % of base) : 227556.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
-72 (-14.88 % of base) : 184743.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-72 (-13.74 % of base) : 276592.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Xml.Serialization.XmlSerializer):System.__Canon:this (FullOpts)
-72 (-34.62 % of base) : 154874.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-68 (-14.17 % of base) : 276585.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Runtime.Serialization.XmlObjectSerializer):System.__Canon:this (FullOpts)
-64 (-23.88 % of base) : 228413.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts)
-60 (-22.06 % of base) : 80245.dasm - Microsoft.FSharp.Collections.Internal+Generator+EnumeratorWrappingLazyGenerator`1[ubyte]:System.Collections.IEnumerator.MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
116 (4.83 % of base) : 132460.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
72 (2.65 % of base) : 125621.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
4 (2.63 % of base) : 182804.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
8 (1.67 % of base) : 226661.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
72 (1.35 % of base) : 228025.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
4 (0.93 % of base) : 195691.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 83899.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-46.67 % of base) : 236881.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-168 (-42.00 % of base) : 154953.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-264 (-36.46 % of base) : 290282.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-72 (-34.62 % of base) : 154874.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-40 (-33.33 % of base) : 245319.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-24 (-31.58 % of base) : 273282.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)
-24 (-30.00 % of base) : 231416.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-32 (-28.57 % of base) : 10012.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-32 (-28.57 % of base) : 257000.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-28.57 % of base) : 257014.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 192182.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-32 (-27.59 % of base) : 277315.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-32 (-27.59 % of base) : 238919.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
-32 (-27.59 % of base) : 238928.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
-24 (-27.27 % of base) : 188214.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
-24 (-27.27 % of base) : 188091.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
-28 (-26.92 % of base) : 243468.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-28 (-26.92 % of base) : 152146.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-24 (-26.09 % of base) : 157657.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 327300360 (overridden on cmd)
Total bytes of diff: 327270396 (overridden on cmd)
Total bytes of delta: -29964 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 585155.dasm (8.64 % of base)
88 : 318749.dasm (2.41 % of base)
64 : 655997.dasm (4.12 % of base)
64 : 612112.dasm (2.04 % of base)
64 : 285631.dasm (1.32 % of base)
56 : 515949.dasm (1.73 % of base)
48 : 136563.dasm (1.20 % of base)
48 : 731904.dasm (1.26 % of base)
48 : 499101.dasm (1.28 % of base)
48 : 587063.dasm (1.28 % of base)
44 : 122900.dasm (1.10 % of base)
44 : 131679.dasm (1.22 % of base)
44 : 203779.dasm (1.14 % of base)
44 : 265967.dasm (1.15 % of base)
44 : 266338.dasm (1.27 % of base)
44 : 269998.dasm (1.22 % of base)
44 : 325583.dasm (1.16 % of base)
44 : 434919.dasm (1.10 % of base)
44 : 724256.dasm (1.15 % of base)
44 : 727350.dasm (1.27 % of base)
Top file improvements (bytes):
-396 : 175504.dasm (-8.65 % of base)
-112 : 655524.dasm (-1.87 % of base)
-104 : 457737.dasm (-4.77 % of base)
-100 : 607204.dasm (-1.15 % of base)
-96 : 445207.dasm (-1.99 % of base)
-92 : 565654.dasm (-5.48 % of base)
-84 : 609955.dasm (-0.97 % of base)
-84 : 631076.dasm (-12.00 % of base)
-80 : 631771.dasm (-0.91 % of base)
-64 : 346174.dasm (-21.05 % of base)
-60 : 467910.dasm (-5.43 % of base)
-60 : 471330.dasm (-2.02 % of base)
-60 : 175482.dasm (-1.26 % of base)
-60 : 205315.dasm (-2.45 % of base)
-60 : 412907.dasm (-2.50 % of base)
-60 : 621458.dasm (-14.29 % of base)
-60 : 634794.dasm (-14.29 % of base)
-60 : 653984.dasm (-8.02 % of base)
-60 : 718290.dasm (-0.48 % of base)
-56 : 446777.dasm (-35.00 % of base)
87 total files with Code Size differences (51 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
112 (8.64 % of base) : 585155.dasm - Moq.Extensions:IsOrContainsTypeMatcher(System.Type):ubyte (Tier1)
88 (2.41 % of base) : 318749.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
64 (4.12 % of base) : 655997.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
64 (2.04 % of base) : 612112.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
64 (1.32 % of base) : 285631.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitUnliftedBinaryOp(int,System.Type,System.Type):this (Tier1)
56 (1.73 % of base) : 515949.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
48 (1.20 % of base) : 136563.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
48 (1.26 % of base) : 731904.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
48 (1.28 % of base) : 499101.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
48 (1.28 % of base) : 587063.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.10 % of base) : 122900.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 131679.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.14 % of base) : 203779.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 265967.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 269998.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.16 % of base) : 325583.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.10 % of base) : 434919.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 724256.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.27 % of base) : 266338.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.27 % of base) : 727350.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method improvements (bytes):
-396 (-8.65 % of base) : 175504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-112 (-1.87 % of base) : 655524.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-104 (-4.77 % of base) : 457737.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
-100 (-1.15 % of base) : 607204.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-96 (-1.99 % of base) : 445207.dasm - System.Xml.Serialization.TempAssembly:LoadAssemblyByPath(System.Type,System.String):System.Reflection.Assembly (Tier1)
-92 (-5.48 % of base) : 565654.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-84 (-0.97 % of base) : 609955.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-84 (-12.00 % of base) : 631076.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitCachingMemberAccessor+Cache`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:GetOrAdd[System.__Canon](System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.Func`2[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon]):System.__Canon:this (Tier1)
-80 (-0.91 % of base) : 631771.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-64 (-21.05 % of base) : 346174.dasm - (dynamicClass):lambda_method254(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
-60 (-1.26 % of base) : 175482.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-60 (-5.43 % of base) : 467910.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier1)
-60 (-14.29 % of base) : 621458.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-60 (-14.29 % of base) : 634794.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-60 (-8.02 % of base) : 653984.dasm - System.Text.Json.Serialization.Tests.StreamTests:GetCollectionElement[System.__Canon](int,System.Random):System.__Canon (Tier1)
-60 (-2.02 % of base) : 471330.dasm - System.Xml.RwFactoryWriterTests.CXmlDriverEngine:ProcessIncludes(System.String[],System.String,System.Xml.Linq.XElement,OLEDB.Test.ModuleCore.MyDict`2[System.String,System.Object],System.Collections.IList):this (Tier1)
-60 (-2.45 % of base) : 205315.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
-60 (-2.50 % of base) : 412907.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
-60 (-0.48 % of base) : 718290.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
-56 (-4.01 % of base) : 406061.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
Top method regressions (percentages):
36 (12.50 % of base) : 248806.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
16 (10.00 % of base) : 472230.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
112 (8.64 % of base) : 585155.dasm - Moq.Extensions:IsOrContainsTypeMatcher(System.Type):ubyte (Tier1)
16 (8.33 % of base) : 112740.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
16 (8.33 % of base) : 173104.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
16 (8.33 % of base) : 702972.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
16 (8.33 % of base) : 213191.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:TryCastToImmutableSortedSet(System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier1)
64 (4.12 % of base) : 655997.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (Tier1)
8 (3.70 % of base) : 407035.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (Tier1)
24 (3.33 % of base) : 173103.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
24 (3.33 % of base) : 702971.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
24 (3.33 % of base) : 112739.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
20 (3.23 % of base) : 449329.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
32 (2.64 % of base) : 376312.dasm - System.Text.RegularExpressions.RegexParser:NoteCaptureName(System.String,int):this (Tier1)
8 (2.53 % of base) : 466412.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
88 (2.41 % of base) : 318749.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
64 (2.04 % of base) : 612112.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
8 (1.92 % of base) : 200093.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
28 (1.78 % of base) : 168332.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
28 (1.78 % of base) : 182412.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
Top method improvements (percentages):
-28 (-46.67 % of base) : 617877.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-46.67 % of base) : 632034.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-35.29 % of base) : 58942.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-56 (-35.00 % of base) : 446777.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
-48 (-30.77 % of base) : 585327.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-32 (-28.57 % of base) : 124570.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-28.57 % of base) : 124006.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-28.00 % of base) : 3650.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-40 (-25.00 % of base) : 706534.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
-24 (-24.00 % of base) : 345458.dasm - (dynamicClass):lambda_method18(System.Runtime.CompilerServices.Closure):long (FullOpts)
-24 (-24.00 % of base) : 332190.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
-28 (-23.33 % of base) : 652739.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,System.Text.Json.JsonElement]:Contains(System.Object):ubyte:this (Tier1)
-40 (-23.26 % of base) : 89983.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
-24 (-23.08 % of base) : 61675.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-22.58 % of base) : 123804.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-40 (-22.22 % of base) : 347040.dasm - (dynamicClass):lambda_method1125(System.Runtime.CompilerServices.Closure):System.Object (FullOpts)
-24 (-22.22 % of base) : 652498.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-24 (-22.22 % of base) : 625634.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-24 (-22.22 % of base) : 625617.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-28 (-21.88 % of base) : 281833.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo,ubyte):System.__Canon (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 129945236 (overridden on cmd)
Total bytes of diff: 129922812 (overridden on cmd)
Total bytes of delta: -22424 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
168 : 219588.dasm (7.23 % of base)
76 : 141553.dasm (14.07 % of base)
72 : 92340.dasm (1.36 % of base)
48 : 93158.dasm (92.31 % of base)
48 : 180374.dasm (2.56 % of base)
40 : 92799.dasm (43.48 % of base)
40 : 95139.dasm (43.48 % of base)
20 : 67523.dasm (0.78 % of base)
12 : 37476.dasm (2.70 % of base)
12 : 184509.dasm (1.84 % of base)
12 : 37563.dasm (2.97 % of base)
12 : 37737.dasm (4.17 % of base)
12 : 37789.dasm (2.97 % of base)
12 : 38077.dasm (1.71 % of base)
12 : 38146.dasm (3.09 % of base)
8 : 37768.dasm (1.80 % of base)
4 : 37780.dasm (0.40 % of base)
4 : 96473.dasm (2.63 % of base)
4 : 37558.dasm (0.49 % of base)
Top file improvements (bytes):
-600 : 61363.dasm (-25.17 % of base)
-384 : 166135.dasm (-15.79 % of base)
-352 : 165019.dasm (-12.59 % of base)
-304 : 166129.dasm (-12.38 % of base)
-296 : 203033.dasm (-17.05 % of base)
-244 : 14509.dasm (-17.04 % of base)
-224 : 166131.dasm (-12.25 % of base)
-176 : 166127.dasm (-6.89 % of base)
-160 : 194980.dasm (-7.53 % of base)
-160 : 166132.dasm (-8.97 % of base)
-160 : 193611.dasm (-7.53 % of base)
-160 : 197889.dasm (-8.97 % of base)
-144 : 62453.dasm (-12.41 % of base)
-140 : 302560.dasm (-2.60 % of base)
-128 : 211996.dasm (-3.03 % of base)
-128 : 232177.dasm (-3.77 % of base)
-120 : 166134.dasm (-8.96 % of base)
-120 : 165700.dasm (-6.61 % of base)
-116 : 166398.dasm (-3.48 % of base)
-116 : 304348.dasm (-3.48 % of base)
74 total files with Code Size differences (55 improved, 19 regressed), 20 unchanged.
Top method regressions (bytes):
168 (7.23 % of base) : 219588.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
76 (14.07 % of base) : 141553.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
72 (1.36 % of base) : 92340.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
48 (92.31 % of base) : 93158.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
48 (2.56 % of base) : 180374.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
40 (43.48 % of base) : 92799.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
40 (43.48 % of base) : 95139.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
20 (0.78 % of base) : 67523.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
12 (2.70 % of base) : 37476.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37563.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37789.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.71 % of base) : 38077.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (4.17 % of base) : 37737.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (3.09 % of base) : 38146.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.84 % of base) : 184509.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
8 (1.80 % of base) : 37768.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.40 % of base) : 37780.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.49 % of base) : 37558.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:ContainSingle(System.String,System.Object[]):FluentAssertions.AndWhichConstraint`2[System.__Canon,System.__Canon]:this (FullOpts)
4 (2.63 % of base) : 96473.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
Top method improvements (bytes):
-600 (-25.17 % of base) : 61363.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-384 (-15.79 % of base) : 166135.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-352 (-12.59 % of base) : 165019.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-304 (-12.38 % of base) : 166129.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-296 (-17.05 % of base) : 203033.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)
-244 (-17.04 % of base) : 14509.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)
-224 (-12.25 % of base) : 166131.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-176 (-6.89 % of base) : 166127.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-160 (-7.53 % of base) : 194980.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-160 (-7.53 % of base) : 193611.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-160 (-8.97 % of base) : 166132.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-160 (-8.97 % of base) : 197889.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-144 (-12.41 % of base) : 62453.dasm - System.CodeDom.Compiler.Tests.CodeGenerationTests:GenerateCode(System.CodeDom.CodeObject,System.CodeDom.Compiler.CodeDomProvider):System.String (FullOpts)
-140 (-2.60 % of base) : 302560.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)
-128 (-3.03 % of base) : 211996.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)
-128 (-3.77 % of base) : 232177.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)
-120 (-6.61 % of base) : 165700.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-120 (-8.96 % of base) : 166134.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (FullOpts)
-116 (-3.48 % of base) : 166398.dasm - XmlSerializerTests:Xml_CollectionRoot_MorePrimitiveTypes() (FullOpts)
-116 (-3.48 % of base) : 304348.dasm - XmlSerializerTests:Xml_CollectionRoot_MorePrimitiveTypes() (FullOpts)
Top method regressions (percentages):
48 (92.31 % of base) : 93158.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
40 (43.48 % of base) : 92799.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
40 (43.48 % of base) : 95139.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
76 (14.07 % of base) : 141553.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
168 (7.23 % of base) : 219588.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
12 (4.17 % of base) : 37737.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (3.09 % of base) : 38146.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37563.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37789.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.70 % of base) : 37476.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (2.63 % of base) : 96473.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
48 (2.56 % of base) : 180374.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
12 (1.84 % of base) : 184509.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
8 (1.80 % of base) : 37768.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.71 % of base) : 38077.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
72 (1.36 % of base) : 92340.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
20 (0.78 % of base) : 67523.dasm - System.Collections.Immutable.Tests.ImmutableSortedDictionaryTest:ToUnorderedTest():this (FullOpts)
4 (0.49 % of base) : 37558.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:ContainSingle(System.String,System.Object[]):FluentAssertions.AndWhichConstraint`2[System.__Canon,System.__Canon]:this (FullOpts)
4 (0.40 % of base) : 37780.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 34880.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-46.67 % of base) : 141038.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-24 (-40.00 % of base) : 30445.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)
-56 (-35.00 % of base) : 164172.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-72 (-34.62 % of base) : 165515.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-40 (-33.33 % of base) : 66256.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-44 (-33.33 % of base) : 166164.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-24 (-31.58 % of base) : 87377.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)
-24 (-31.58 % of base) : 132609.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48119.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-24 (-30.00 % of base) : 42489.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-24 (-30.00 % of base) : 42486.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48113.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48115.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 42481.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-32 (-28.57 % of base) : 185576.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-32 (-28.57 % of base) : 74070.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-28.57 % of base) : 125768.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 93926.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NonNullableField(System.Object):System.__Canon (FullOpts)
-60 (-27.78 % of base) : 237619.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10946100 (overridden on cmd)
Total bytes of diff: 10942812 (overridden on cmd)
Total bytes of delta: -3288 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 5235.dasm (4.35 % of base)
Top file improvements (bytes):
-120 : 32956.dasm (-28.30 % of base)
-64 : 28050.dasm (-6.81 % of base)
-64 : 32615.dasm (-25.81 % of base)
-60 : 31160.dasm (-20.55 % of base)
-60 : 8863.dasm (-32.61 % of base)
-56 : 10169.dasm (-8.70 % of base)
-56 : 32592.dasm (-2.52 % of base)
-56 : 5449.dasm (-22.22 % of base)
-56 : 7181.dasm (-4.09 % of base)
-52 : 31427.dasm (-8.28 % of base)
-44 : 18168.dasm (-16.18 % of base)
-44 : 21120.dasm (-3.20 % of base)
-44 : 30303.dasm (-2.68 % of base)
-40 : 16350.dasm (-4.81 % of base)
-40 : 20226.dasm (-12.50 % of base)
-40 : 28620.dasm (-8.06 % of base)
-40 : 32588.dasm (-17.86 % of base)
-40 : 33054.dasm (-13.89 % of base)
-40 : 8417.dasm (-12.50 % of base)
-36 : 11197.dasm (-5.77 % of base)
60 total files with Code Size differences (59 improved, 1 regressed), 6 unchanged.
Top method regressions (bytes):
16 (4.35 % of base) : 5235.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
Top method improvements (bytes):
-120 (-28.30 % of base) : 32956.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)
-64 (-6.81 % of base) : 28050.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)
-64 (-25.81 % of base) : 32615.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-60 (-32.61 % of base) : 8863.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-60 (-20.55 % of base) : 31160.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-56 (-8.70 % of base) : 10169.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)
-56 (-4.09 % of base) : 7181.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)
-56 (-2.52 % of base) : 32592.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)
-56 (-22.22 % of base) : 5449.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-52 (-8.28 % of base) : 31427.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)
-44 (-3.20 % of base) : 21120.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)
-44 (-16.18 % of base) : 18168.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-2.68 % of base) : 30303.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-40 (-12.50 % of base) : 8417.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
-40 (-4.81 % of base) : 16350.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-40 (-12.50 % of base) : 20226.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-40 (-8.06 % of base) : 28620.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-40 (-13.89 % of base) : 33054.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-40 (-17.86 % of base) : 32588.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-5.77 % of base) : 11197.dasm - FSharp.Compiler.ParseAndCheckInputs:GetScopedPragmasForHashDirective(FSharp.Compiler.Syntax.ParsedHashDirective):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma] (FullOpts)
Top method regressions (percentages):
16 (4.35 % of base) : 5235.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
Top method improvements (percentages):
-60 (-32.61 % of base) : 8863.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-24 (-31.58 % of base) : 31250.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-120 (-28.30 % of base) : 32956.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)
-28 (-28.00 % of base) : 435.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-25.93 % of base) : 18805.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-64 (-25.81 % of base) : 32615.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-28 (-23.33 % of base) : 10517.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
-56 (-22.22 % of base) : 5449.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-21.21 % of base) : 5122.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)
-20 (-20.83 % of base) : 17085.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-60 (-20.55 % of base) : 31160.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-32 (-19.05 % of base) : 32983.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-28 (-18.42 % of base) : 10123.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-20 (-17.86 % of base) : 16771.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-40 (-17.86 % of base) : 32588.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-17.50 % of base) : 9763.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-20 (-17.24 % of base) : 976.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-24 (-17.14 % of base) : 22527.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-44 (-16.18 % of base) : 18168.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-16 (-16.00 % of base) : 30462.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
smoke_tests.nativeaot.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2628404 (overridden on cmd)
Total bytes of diff: 2626068 (overridden on cmd)
Total bytes of delta: -2336 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-80 : 924.dasm (-19.05 % of base)
-60 : 447.dasm (-22.06 % of base)
-60 : 444.dasm (-22.39 % of base)
-56 : 7091.dasm (-23.33 % of base)
-56 : 986.dasm (-18.18 % of base)
-48 : 9094.dasm (-18.18 % of base)
-40 : 4838.dasm (-23.26 % of base)
-32 : 7383.dasm (-8.70 % of base)
-32 : 7390.dasm (-8.42 % of base)
-32 : 7393.dasm (-8.42 % of base)
-32 : 7386.dasm (-8.70 % of base)
-32 : 8415.dasm (-9.20 % of base)
-28 : 1169.dasm (-15.56 % of base)
-28 : 1439.dasm (-15.56 % of base)
-28 : 18791.dasm (-23.33 % of base)
-28 : 897.dasm (-14.89 % of base)
-28 : 1173.dasm (-15.56 % of base)
-28 : 3179.dasm (-23.33 % of base)
-28 : 8650.dasm (-6.25 % of base)
-28 : 920.dasm (-14.89 % of base)
54 total files with Code Size differences (54 improved, 0 regressed), 6 unchanged.
Top method improvements (bytes):
-80 (-19.05 % of base) : 924.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-22.06 % of base) : 447.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-60 (-22.39 % of base) : 444.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-56 (-18.18 % of base) : 986.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-56 (-23.33 % of base) : 7091.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-48 (-18.18 % of base) : 9094.dasm - System.Reflection.AssemblyName:Clone():System.Object:this (FullOpts)
-40 (-23.26 % of base) : 4838.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-32 (-9.20 % of base) : 8415.dasm - PInvokeTests.Program+Delegate_Int_AggressiveInlining:InvokeMulticastThunk(int,int,int,int,int,int,int,int,int,int):int:this (FullOpts)
-32 (-8.42 % of base) : 7393.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.ByteCollection,System.Type):ubyte[] (FullOpts)
-32 (-8.70 % of base) : 7386.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.Int16Collection,System.Type):short[] (FullOpts)
-32 (-8.42 % of base) : 7390.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.SByteCollection,System.Type):byte[] (FullOpts)
-32 (-8.70 % of base) : 7383.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.UInt16Collection,System.Type):ushort[] (FullOpts)
-28 (-23.33 % of base) : 18791.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-28 (-23.33 % of base) : 3179.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-28 (-15.56 % of base) : 1439.dasm - Generics+TestVariantCasting+GenericDelegate`1[System.__Canon]:InvokeMulticastThunk():System.__Canon:this (FullOpts)
-28 (-14.89 % of base) : 897.dasm - GetAndReturnPointerDelegate:InvokeMulticastThunk(ulong):ulong:this (FullOpts)
-28 (-14.89 % of base) : 1423.dasm - Mutate`1[System.__Canon]:InvokeMulticastThunk(byref):this (FullOpts)
-28 (-14.89 % of base) : 8408.dasm - PInvokeTests.Program+Delegate_OutString:InvokeMulticastThunk(byref):ubyte:this (FullOpts)
-28 (-14.89 % of base) : 8418.dasm - PInvokeTests.Program+SetLastErrorFuncDelegate:InvokeMulticastThunk(int):this (FullOpts)
-28 (-15.56 % of base) : 893.dasm - System.Action:InvokeMulticastThunk():this (FullOpts)
Top method improvements (percentages):
-24 (-30.00 % of base) : 9928.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-24 (-30.00 % of base) : 6694.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-24 (-28.57 % of base) : 252.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
-20 (-26.32 % of base) : 3077.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-20 (-26.32 % of base) : 18738.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-23.33 % of base) : 18791.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-28 (-23.33 % of base) : 3179.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-56 (-23.33 % of base) : 7091.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-40 (-23.26 % of base) : 4838.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-60 (-22.39 % of base) : 444.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-60 (-22.06 % of base) : 447.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-20 (-20.83 % of base) : 6872.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-20 (-20.00 % of base) : 8938.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-80 (-19.05 % of base) : 924.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-20 (-18.52 % of base) : 9047.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
-20 (-18.52 % of base) : 9040.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
-20 (-18.52 % of base) : 9048.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
-56 (-18.18 % of base) : 986.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-48 (-18.18 % of base) : 9094.dasm - System.Reflection.AssemblyName:Clone():System.Object:this (FullOpts)
-20 (-17.86 % of base) : 6109.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
linux x64
Diffs are based on 2,359,473 contexts (977,766 MinOpts, 1,381,707 FullOpts).
MISSED contexts: base: 6,922 (0.28%), diff: 152,789 (6.08%)
Overall (-137,280 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
11,100,096 |
-2,254 |
| benchmarks.run_pgo.linux.x64.checked.mch |
57,263,225 |
-33,929 |
| benchmarks.run_tiered.linux.x64.checked.mch |
15,422,994 |
-404 |
| coreclr_tests.run.linux.x64.checked.mch |
378,105,284 |
-2,321 |
| libraries.crossgen2.linux.x64.checked.mch |
38,686,031 |
-36,524 |
| libraries.pmi.linux.x64.checked.mch |
43,258,364 |
-10,612 |
| libraries_tests.run.linux.x64.Release.mch |
286,247,742 |
-31,435 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
103,979,238 |
-15,351 |
| realworld.run.linux.x64.checked.mch |
9,031,108 |
-2,193 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
3,808,639 |
-2,257 |
FullOpts (-137,280 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
10,835,923 |
-2,254 |
| benchmarks.run_pgo.linux.x64.checked.mch |
35,952,648 |
-33,929 |
| benchmarks.run_tiered.linux.x64.checked.mch |
3,141,869 |
-404 |
| coreclr_tests.run.linux.x64.checked.mch |
98,566,753 |
-2,321 |
| libraries.crossgen2.linux.x64.checked.mch |
38,684,829 |
-36,524 |
| libraries.pmi.linux.x64.checked.mch |
43,145,494 |
-10,612 |
| libraries_tests.run.linux.x64.Release.mch |
102,736,622 |
-31,435 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
93,320,790 |
-15,351 |
| realworld.run.linux.x64.checked.mch |
8,644,198 |
-2,193 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
3,807,690 |
-2,257 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-23 (-50.00%) : 6789.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -2,54 +2,37 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -57,10 +40,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-50.00%) : 13296.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -2,54 +2,37 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -57,10 +40,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-28 (-36.36%) : 9009.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+19 (+20.21%) : 21907.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
@@ -8,65 +8,66 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
;
; Lcl frame size = 0
G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ lea rbp, [rsp+0x20]
+ ;; size=13 bbWeight=1 PerfScore 5.50
G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor ebx, ebx
mov r15d, dword ptr [(reloc)]
test r15d, r15d
- jle SHORT G_M3904_IG07
- ;; size=14 bbWeight=1 PerfScore 3.50
-G_M3904_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, gword ptr [rdi]
+ jle SHORT G_M3904_IG04
+ mov rsi, 0xD1FFAB1E ; static handle
+ mov r14, gword ptr [rsi]
+ ; gcrRegs +[r14]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, 0xD1FFAB1E ; static handle
+ ;; size=55 bbWeight=1 PerfScore 7.50
+G_M3904_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M3904_IG06
- ;; size=21 bbWeight=4 PerfScore 15.00
-G_M3904_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M3904_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M3904_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
inc ebx
cmp ebx, r15d
jl SHORT G_M3904_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00
-G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00
+G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r14]
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 94, prolog size 9, PerfScore 41.25, instruction count 27, allocated bytes for code 94 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
+; Total bytes of code 113, prolog size 13, PerfScore 34.50, instruction count 31, allocated bytes for code 113 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
; ============================================================
Unwind Info:
@@ -74,11 +75,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+19 (+20.21%) : 36675.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
@@ -8,65 +8,66 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
;
; Lcl frame size = 0
G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ lea rbp, [rsp+0x20]
+ ;; size=13 bbWeight=1 PerfScore 5.50
G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor ebx, ebx
mov r15d, dword ptr [(reloc)]
test r15d, r15d
- jle SHORT G_M896_IG07
- ;; size=14 bbWeight=1 PerfScore 3.50
-G_M896_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, gword ptr [rdi]
+ jle SHORT G_M896_IG04
+ mov rsi, 0xD1FFAB1E ; static handle
+ mov r14, gword ptr [rsi]
+ ; gcrRegs +[r14]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, 0xD1FFAB1E ; static handle
+ ;; size=55 bbWeight=1 PerfScore 7.50
+G_M896_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M896_IG06
- ;; size=21 bbWeight=4 PerfScore 15.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M896_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
inc ebx
cmp ebx, r15d
jl SHORT G_M896_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r14]
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 94, prolog size 9, PerfScore 41.25, instruction count 27, allocated bytes for code 94 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
+; Total bytes of code 113, prolog size 13, PerfScore 34.50, instruction count 31, allocated bytes for code 113 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
; ============================================================
Unwind Info:
@@ -74,11 +75,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+19 (+20.21%) : 40884.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
@@ -8,65 +8,66 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
;
; Lcl frame size = 0
G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ lea rbp, [rsp+0x20]
+ ;; size=13 bbWeight=1 PerfScore 5.50
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor ebx, ebx
mov r15d, dword ptr [(reloc)]
test r15d, r15d
- jle SHORT G_M40467_IG07
- ;; size=14 bbWeight=1 PerfScore 3.50
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, gword ptr [rdi]
+ jle SHORT G_M40467_IG04
+ mov rsi, 0xD1FFAB1E ; static handle
+ mov r14, gword ptr [rsi]
+ ; gcrRegs +[r14]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, 0xD1FFAB1E ; static handle
+ ;; size=55 bbWeight=1 PerfScore 7.50
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M40467_IG06
- ;; size=21 bbWeight=4 PerfScore 15.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M40467_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
inc ebx
cmp ebx, r15d
jl SHORT G_M40467_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r14]
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 94, prolog size 9, PerfScore 41.25, instruction count 27, allocated bytes for code 94 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
+; Total bytes of code 113, prolog size 13, PerfScore 34.50, instruction count 31, allocated bytes for code 113 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
; ============================================================
Unwind Info:
@@ -74,11 +75,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_pgo.linux.x64.checked.mch
-28 (-36.36%) : 12256.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-28 (-28.57%) : 33442.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -2,83 +2,63 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Reflection.MemberInfo>
-; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> r14 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MemberInfo>
+; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V06 cse0 [V06,T05] ( 3, 3 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15
push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi
- mov rbx, rdi
- mov r15, rsi
- ; gcrRegs +[r15]
- mov r14d, edx
- ;; size=25 bbWeight=1 PerfScore 7.25
-G_M29548_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
+ mov r15d, edx
+ ;; size=20 bbWeight=1 PerfScore 4.75
+G_M29548_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r14, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [r14]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- movzx rdx, r14b
- mov rdi, r15
+ movzx rdx, r15b
+ mov rdi, rbx
; gcrRegs +[rdi]
call [System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute]
- ; gcrRegs -[rsi rdi r15]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M29548_IG05
- ;; size=36 bbWeight=1 PerfScore 10.25
-G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M29548_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rbx rsi rdi]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [r14]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M29548_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=40 bbWeight=1 PerfScore 12.25
+G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
pop r14
pop r15
- pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=10 bbWeight=1 PerfScore 2.75
-; Total bytes of code 98, prolog size 16, PerfScore 23.19, instruction count 34, allocated bytes for code 98 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 70, prolog size 14, PerfScore 19.75, instruction count 23, allocated bytes for code 70 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -86,13 +66,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x09
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-23 (-21.10%) : 89681.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)
@@ -8,99 +8,80 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) byref -> rdi this single-def
-; V01 TypeCtx [V01,T03] ( 4, 3.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> rdi this single-def
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rbx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T09] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp5 [V07,T07] ( 4, 2.12) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V08 tmp6 [V08,T02] ( 4, 6 ) byref -> r15 single-def "Inlining Arg"
-; V09 tmp7 [V09,T04] ( 3, 5 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp9 [V11,T10] ( 0, 0 ) int -> zero-ref
-; V12 tmp10 [V12,T06] ( 2, 3 ) int -> rsi "Inlining Arg"
-; V13 tmp11 [V13,T08] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp12 [V14,T05] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> rsi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp7 [V09,T06] ( 2, 3 ) int -> rax "Inlining Arg"
+; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V12 cse0 [V12,T04] ( 4, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M44215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rsi
+ push rax
+ lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rsi
mov rbx, rsi
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M44215_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- lea r15, bword ptr [rdi+0x08]
- ; byrRegs +[r15]
- mov esi, dword ptr [rdi]
- mov rdi, gword ptr [r15]
+ lea rsi, bword ptr [rdi+0x08]
+ ; byrRegs +[rsi]
+ mov eax, dword ptr [rdi]
+ mov rdi, gword ptr [rsi]
; gcrRegs +[rdi]
; byrRegs -[rdi]
- test rdi, rdi
+ mov rsi, rdi
+ ; gcrRegs +[rsi]
+ ; byrRegs -[rsi]
+ test rsi, rsi
je SHORT G_M44215_IG04
- ;; size=14 bbWeight=1 PerfScore 5.75
-G_M44215_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
- mov rdi, gword ptr [rdi+0x18]
- cmp word ptr [rdi+0x0C], 1
+ ;; size=17 bbWeight=1 PerfScore 6.00
+G_M44215_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rsi, gword ptr [rsi+0x18]
+ cmp word ptr [rsi+0x0C], 1
jne SHORT G_M44215_IG04
- mov rdi, gword ptr [r15]
+ mov esi, eax
+ ; gcrRegs -[rsi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x18]<unknown method>
; gcrRegs -[rdi] +[rax]
- ; byrRegs -[r15]
jmp SHORT G_M44215_IG05
- ;; size=26 bbWeight=0.50 PerfScore 8.50
-G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- ; gcrRegs -[rax]
- ; byrRegs +[r15]
- mov rax, gword ptr [r15]
+ ;; size=25 bbWeight=0.50 PerfScore 7.62
+G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rdi]
+ mov rax, rdi
; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r15]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M44215_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
mov rdi, qword ptr [rbx+0x38]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M44215_IG08
- ;; size=15 bbWeight=0.25 PerfScore 2.50
-G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M44215_IG08: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M44215_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+ nop
+ ;; size=19 bbWeight=1 PerfScore 7.50
+G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 109, prolog size 17, PerfScore 27.44, instruction count 38, allocated bytes for code 109 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 86, prolog size 12, PerfScore 28.25, instruction count 31, allocated bytes for code 86 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -108,12 +89,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+37 (+2.35%) : 147677.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
@@ -11,43 +11,43 @@
;
; V00 this [V00,T00] ( 19, 17.04) ref -> rbx this class-hnd single-def <System.Reflection.Emit.DynamicMethod>
; V01 arg1 [V01,T14] ( 4, 4 ) ref -> r13 class-hnd single-def <System.String>
-; V02 arg2 [V02,T17] ( 3, 3 ) int -> rdx single-def
-; V03 arg3 [V03,T18] ( 3, 3 ) int -> rcx single-def
-; V04 arg4 [V04,T09] ( 7, 4.35) ref -> r14 class-hnd single-def <System.Type>
+; V02 arg2 [V02,T18] ( 3, 3 ) int -> rdx single-def
+; V03 arg3 [V03,T19] ( 3, 3 ) int -> rcx single-def
+; V04 arg4 [V04,T10] ( 7, 4.35) ref -> r14 class-hnd single-def <System.Type>
; V05 arg5 [V05,T08] ( 5, 6.02) ref -> r15 class-hnd single-def <System.Type[]>
-; V06 arg6 [V06,T16] ( 8, 5.02) ref -> r12 class-hnd single-def <System.Type>
-; V07 arg7 [V07,T32] ( 5, 2.01) ref -> [rbp+0x18] class-hnd single-def <System.Reflection.Module>
-; V08 arg8 [V08,T41] ( 2, 1.00) ubyte -> [rbp+0x20] single-def
-; V09 arg9 [V09,T40] ( 1, 1.00) ubyte -> [rbp+0x28] single-def
+; V06 arg6 [V06,T17] ( 8, 5.02) ref -> r12 class-hnd single-def <System.Type>
+; V07 arg7 [V07,T34] ( 5, 2.01) ref -> [rbp+0x18] class-hnd single-def <System.Reflection.Module>
+; V08 arg8 [V08,T43] ( 2, 1.00) ubyte -> [rbp+0x20] single-def
+; V09 arg9 [V09,T42] ( 1, 1.00) ubyte -> [rbp+0x28] single-def
; V10 loc0 [V10,T01] ( 9, 17.13) int -> [rbp-0x2C]
-; V11 loc1 [V11,T07] ( 11, 9.49) ref -> r12 class-hnd exact <System.RuntimeType>
+; V11 loc1 [V11,T06] ( 10, 8.99) ref -> r14 class-hnd exact single-def <System.RuntimeType>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T45] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp1 [V13,T47] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp4 [V16,T31] ( 4, 2.68) ref -> rsi
-; V17 tmp5 [V17,T27] ( 2, 2.01) int -> rdi
-; V18 tmp6 [V18,T39] ( 2, 0.00) int -> rdi
-; V19 tmp7 [V19,T28] ( 2, 2.01) int -> rdi
-; V20 tmp8 [V20,T34] ( 3, 2.00) ref -> r12
-;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V22 tmp10 [V22,T46] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V23 tmp11 [V23,T44] ( 2, 0.00) int -> rax
-;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V25 tmp13 [V25,T13] ( 6, 6.04) ref -> r14 class-hnd "spilling QMark2" <System.RuntimeType>
-; V26 tmp14 [V26,T47] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp15 [V27,T04] ( 3, 12.09) ref -> [rbp-0x48] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
-;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V29 tmp17 [V29,T02] ( 5, 15.12) ref -> rsi class-hnd "spilling QMark2" <System.RuntimeType>
-; V30 tmp18 [V30,T48] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V31 tmp19 [V31,T49] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp20 [V32,T22] ( 3, 4.03) ref -> rsi "guarded devirt return temp"
-; V33 tmp21 [V33,T03] ( 5, 12.09) ref -> rdi "guarded devirt arg temp"
-;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V35 tmp23 [V35,T38] ( 3, 1.34) ref -> r14 "guarded devirt return temp"
-;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V37 tmp25 [V37,T33] ( 3, 2.00) ref -> r12 "guarded devirt return temp"
-;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V16 tmp4 [V16,T33] ( 4, 2.68) ref -> rsi
+; V17 tmp5 [V17,T28] ( 2, 2.01) int -> rdi
+; V18 tmp6 [V18,T41] ( 2, 0.00) int -> rdi
+; V19 tmp7 [V19,T29] ( 2, 2.01) int -> rdi
+; V20 tmp8 [V20,T36] ( 3, 2.00) ref -> r14
+; V21 tmp9 [V21,T48] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T46] ( 2, 0.00) int -> rax
+; V23 tmp11 [V23,T32] ( 2, 2.68) ref -> rsi class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V24 tmp12 [V24,T49] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp13 [V25,T04] ( 3, 12.09) ref -> [rbp-0x38] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V26 tmp14 [V26,T07] ( 2, 8.06) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <System.RuntimeType>
+; V27 tmp15 [V27,T50] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp16 [V28,T51] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp17 [V29,T23] ( 3, 4.03) ref -> rdi "guarded devirt return temp"
+; V30 tmp18 [V30,T03] ( 5, 12.09) ref -> rdi "guarded devirt arg temp"
+;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V32 tmp20 [V32,T40] ( 3, 1.34) ref -> r14 "guarded devirt return temp"
+;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V34 tmp22 [V34,T35] ( 3, 2.00) ref -> r12 "guarded devirt return temp"
+;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V37 tmp25 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp26 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -58,53 +58,52 @@
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp37 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V52 tmp40 [V52,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V53 tmp41 [V53,T24] ( 4, 4.00) ubyte -> rax "Inline stloc first use temp"
-;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
-;* V55 tmp43 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
-;* V57 tmp45 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
-; V59 tmp47 [V59,T19] ( 12, 4.99) ref -> [rbp-0x50] class-hnd "Inline stloc first use temp" <System.Type>
-; V60 tmp48 [V60,T20] ( 3, 4.99) int -> rcx "guarded devirt return temp"
-;* V61 tmp49 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V62 tmp50 [V62,T21] ( 3, 4.99) ubyte -> rcx "Inline return value spill temp"
-; V63 tmp51 [V63,T25] ( 4, 4.00) ubyte -> rax "Inline stloc first use temp"
-;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
-;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V67 tmp55 [V67,T50] ( 3, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V69 tmp57 [V69,T35] ( 4, 2.00) int -> rax
-; V70 tmp58 [V70,T36] ( 4, 2.00) ubyte -> rcx "Inline stloc first use temp"
-;* V71 tmp59 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V72 tmp60 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp61 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V74 tmp62 [V74,T26] ( 2, 4.00) byref -> rdi single-def "Inlining Arg"
-;* V75 tmp63 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.m_type (fldOffset=0x0)" P-INDEP
-; V76 tmp64 [V76,T29] ( 5, 3.00) ref -> rdi single-def "field V56.m_type (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T37] ( 2, 2.00) ref -> rdi single-def "field V64.m_type (fldOffset=0x0)" P-INDEP
-;* V78 tmp66 [V78 ] ( 0, 0 ) long -> zero-ref "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V79 tmp67 [V79,T30] ( 3, 3.00) long -> rdi "field V71.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V80 tmp68 [V80,T05] ( 3, 12.09) ref -> rdi "arr expr"
-;* V81 tmp69 [V81,T23] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V82 tmp70 [V82,T51] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V83 tmp71 [V83,T52] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V84 tmp72 [V84,T43] ( 2, 0.00) ref -> rsi single-def "argument with side effect"
-; V85 tmp73 [V85,T53] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V86 tmp74 [V86,T54] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V87 tmp75 [V87,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V88 tmp76 [V88,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V89 cse0 [V89,T10] ( 3, 6.05) ref -> rdi "CSE - moderate"
-; V90 cse1 [V90,T11] ( 3, 6.05) ref -> rdi "CSE - moderate"
-; V91 cse2 [V91,T12] ( 2, 4.03) ref -> rdi "CSE - moderate"
-; V92 cse3 [V92,T06] ( 12, 11.72) long -> [rbp-0x38] multi-def "CSE - aggressive"
-; V93 cse4 [V93,T15] ( 4, 5.03) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
+;* V49 tmp37 [V49,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp38 [V50,T25] ( 4, 4.00) ubyte -> rax "Inline stloc first use temp"
+;* V51 tmp39 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
+;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
+;* V53 tmp41 [V53 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
+;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
+; V56 tmp44 [V56,T20] ( 12, 4.99) ref -> r12 class-hnd "Inline stloc first use temp" <System.Type>
+; V57 tmp45 [V57,T21] ( 3, 4.99) int -> rcx "guarded devirt return temp"
+;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V59 tmp47 [V59,T22] ( 3, 4.99) ubyte -> rcx "Inline return value spill temp"
+; V60 tmp48 [V60,T26] ( 4, 4.00) ubyte -> rax "Inline stloc first use temp"
+;* V61 tmp49 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
+;* V62 tmp50 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V63 tmp51 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V64 tmp52 [V64,T52] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V65 tmp53 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V66 tmp54 [V66,T37] ( 4, 2.00) int -> rax
+; V67 tmp55 [V67,T38] ( 4, 2.00) ubyte -> rcx "Inline stloc first use temp"
+;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V69 tmp57 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V70 tmp58 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V71 tmp59 [V71,T27] ( 2, 4.00) byref -> rdi single-def "Inlining Arg"
+;* V72 tmp60 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V52.m_type (fldOffset=0x0)" P-INDEP
+; V73 tmp61 [V73,T30] ( 5, 3.00) ref -> rdi single-def "field V53.m_type (fldOffset=0x0)" P-INDEP
+; V74 tmp62 [V74,T39] ( 2, 2.00) ref -> rdi single-def "field V61.m_type (fldOffset=0x0)" P-INDEP
+;* V75 tmp63 [V75 ] ( 0, 0 ) long -> zero-ref "field V65.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V76 tmp64 [V76,T31] ( 3, 3.00) long -> rdi "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T05] ( 3, 12.09) ref -> rdi "arr expr"
+;* V78 tmp66 [V78,T24] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V79 tmp67 [V79,T53] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V80 tmp68 [V80,T54] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V81 tmp69 [V81,T45] ( 2, 0.00) ref -> rsi single-def "argument with side effect"
+; V82 tmp70 [V82,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V83 tmp71 [V83,T56] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V84 tmp72 [V84,T57] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V85 tmp73 [V85,T58] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V86 cse0 [V86,T11] ( 3, 6.05) ref -> rdi "CSE - moderate"
+; V87 cse1 [V87,T12] ( 3, 6.05) ref -> rdi "CSE - moderate"
+; V88 cse2 [V88,T13] ( 2, 4.03) ref -> rdi "CSE - moderate"
+; V89 cse3 [V89,T16] ( 4, 5.03) int -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V90 rat0 [V90,T02] ( 5, 15.12) ref -> rsi class-hnd "replacement local" <System.RuntimeType>
+; V91 rat1 [V91,T15] ( 5, 5.03) ref -> r14 class-hnd "replacement local" <System.RuntimeType>
+; V92 rat2 [V92,T09] ( 5, 7.49) ref -> r14 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -113,8 +112,8 @@ G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
mov rbx, rdi
; gcrRegs +[rbx]
mov r13, rsi
@@ -128,17 +127,17 @@ G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=35 bbWeight=1 PerfScore 8.75
G_M32743_IG02: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
test r13, r13
- je G_M32743_IG45
+ je G_M32743_IG48
cmp edx, 22
- jne G_M32743_IG46
+ jne G_M32743_IG49
cmp ecx, 1
- jne G_M32743_IG46
+ jne G_M32743_IG49
;; size=27 bbWeight=1 PerfScore 3.75
G_M32743_IG03: ; bbWeight=1.00, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
test r15, r15
- je G_M32743_IG50
+ je G_M32743_IG53
mov ecx, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x3C], ecx
+ mov dword ptr [rbp-0x30], ecx
mov esi, ecx
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
@@ -152,7 +151,7 @@ G_M32743_IG03: ; bbWeight=1.00, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
xor eax, eax
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x30], 0
jle G_M32743_IG09
;; size=57 bbWeight=1.00 PerfScore 10.80
G_M32743_IG04: ; bbWeight=2.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
@@ -160,26 +159,27 @@ G_M32743_IG04: ; bbWeight=2.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M32743_IG48
+ je G_M32743_IG51
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
- mov gword ptr [rbp-0x48], rdx
- ; GC ptr vars +{V27}
- mov r8, 0xD1FFAB1E ; System.RuntimeType
- cmp qword ptr [rdi], r8
- jne G_M32743_IG47
+ mov gword ptr [rbp-0x38], rdx
+ ; GC ptr vars +{V25}
+ mov rsi, 0xD1FFAB1E ; System.RuntimeType
+ cmp qword ptr [rdi], rsi
+ jne G_M32743_IG50
+ ;; size=43 bbWeight=2.02 PerfScore 21.67
+G_M32743_IG05: ; bbWeight=2.02, gcVars=0000000000000010 {V25}, gcrefRegs=F08C {rdx rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rsi, rdi
; gcrRegs +[rsi]
- ;; size=46 bbWeight=2.02 PerfScore 22.17
-G_M32743_IG05: ; bbWeight=2.02, gcVars=0000000000000010 {V27}, gcrefRegs=F04C {rdx rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rdi]
test rsi, rsi
je SHORT G_M32743_IG08
- ;; size=5 bbWeight=2.02 PerfScore 2.52
+ ;; size=8 bbWeight=2.02 PerfScore 3.02
G_M32743_IG06: ; bbWeight=1.01, gcrefRegs=F04C {rdx rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rsi], r8
+ ; gcrRegs -[rdi]
...
+18 (+9.57%) : 99320.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,16 +10,14 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,299.98) int -> rbx
+; V01 loc0 [V01,T01] ( 4,299.98) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,449.51) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,249.73) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,749.18) ref -> rax class-hnd "spilling QMark2" <PerfLabTests.Foo[]>
-; V06 cse0 [V06,T05] ( 2,100.00) ref -> r13 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3, 99.91) ref -> r14 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.01) int -> r15 "CSE - aggressive"
-; V09 rat0 [V09,T08] ( 3, 0.04) ref -> rsi "Spilling to split statement for tree"
-; V10 rat1 [V10,T07] ( 5, 0.07) ref -> r13 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V03 cse0 [V03,T03] ( 2,100.00) ref -> r13 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4, 99.91) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.01) int -> r15 "CSE - aggressive"
+; V06 rat0 [V06,T06] ( 3, 0.04) ref -> rsi "Spilling to split statement for tree"
+; V07 rat1 [V07,T05] ( 5, 0.07) ref -> r13 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V08 rat2 [V08,T00] ( 5,699.23) ref -> rsi class-hnd "replacement local" <PerfLabTests.Foo[]>
;
; Lcl frame size = 0
@@ -34,11 +32,11 @@ G_M13964_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x3C]
;; size=43 bbWeight=0.01 PerfScore 0.10
-G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r15d, dword ptr [(reloc)]
cmp ebx, r15d
- jge SHORT G_M13964_IG12
- ;; size=12 bbWeight=0.01 PerfScore 0.03
+ jge G_M13964_IG13
+ ;; size=16 bbWeight=0.01 PerfScore 0.03
G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; static handle
mov r14, gword ptr [rdi]
@@ -67,41 +65,47 @@ G_M13964_IG05: ; bbWeight=0, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
G_M13964_IG06: ; bbWeight=99.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r13, r13
- je SHORT G_M13964_IG11
+ je SHORT G_M13964_IG09
;; size=5 bbWeight=99.99 PerfScore 124.99
G_M13964_IG07: ; bbWeight=99.89, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M13964_IG10
- ;; size=11 bbWeight=99.89 PerfScore 174.81
-G_M13964_IG08: ; bbWeight=49.95, gcrefRegs=6041 {rax rsi r13 r14}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ jne SHORT G_M13964_IG11
+ ;; size=8 bbWeight=99.89 PerfScore 149.84
+G_M13964_IG08: ; bbWeight=99.89, gcrefRegs=6040 {rsi r13 r14}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rsi]
+ ;; size=15 bbWeight=99.89 PerfScore 124.86
+G_M13964_IG09: ; bbWeight=99.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ inc ebx
+ cmp ebx, r15d
+ jge SHORT G_M13964_IG13
+ ;; size=7 bbWeight=99.99 PerfScore 149.99
+G_M13964_IG10: ; bbWeight=99.98, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M13964_IG06
+ ;; size=2 bbWeight=99.98 PerfScore 199.96
+G_M13964_IG11: ; bbWeight=49.95, gcrefRegs=6040 {rsi r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; PerfLabTests.Foo[]
- cmp qword ptr [rax], rdi
- je SHORT G_M13964_IG10
+ cmp qword ptr [rsi], rdi
+ je SHORT G_M13964_IG08
;; size=15 bbWeight=49.95 PerfScore 212.27
-G_M13964_IG09: ; bbWeight=24.97, gcrefRegs=6040 {rsi r13 r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M13964_IG12: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; PerfLabTests.Foo[]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=24.97 PerfScore 24.97
-G_M13964_IG10: ; bbWeight=99.89, gcrefRegs=6001 {rax r13 r14}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
- ;; size=18 bbWeight=99.89 PerfScore 149.84
-G_M13964_IG11: ; bbWeight=99.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- inc ebx
- cmp ebx, r15d
- jl SHORT G_M13964_IG06
- ;; size=7 bbWeight=99.99 PerfScore 149.99
-G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r13-r14]
+ jmp SHORT G_M13964_IG08
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M13964_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rsi r13-r14]
add rsp, 112
pop rbx
pop r13
@@ -111,7 +115,7 @@ G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 43, PerfScore 837.05, instruction count 47, allocated bytes for code 188 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 206, prolog size 43, PerfScore 962.09, instruction count 50, allocated bytes for code 206 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
+18 (+9.57%) : 141136.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,16 +10,14 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf2.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,299.98) int -> rbx
+; V01 loc0 [V01,T01] ( 4,299.98) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,449.42) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,249.68) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,749.03) ref -> rax class-hnd "spilling QMark2" <PerfLabTests.CastingPerf2.Foo>
-; V06 cse0 [V06,T05] ( 2,100.00) ref -> r13 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3, 99.89) ref -> r14 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.01) int -> r15 "CSE - aggressive"
-; V09 rat0 [V09,T08] ( 3, 0.04) ref -> rsi "Spilling to split statement for tree"
-; V10 rat1 [V10,T07] ( 5, 0.07) ref -> r13 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V03 cse0 [V03,T03] ( 2,100.00) ref -> r13 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4, 99.89) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.01) int -> r15 "CSE - aggressive"
+; V06 rat0 [V06,T06] ( 3, 0.04) ref -> rsi "Spilling to split statement for tree"
+; V07 rat1 [V07,T05] ( 5, 0.07) ref -> r13 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V08 rat2 [V08,T00] ( 5,699.09) ref -> rsi class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
;
; Lcl frame size = 0
@@ -34,11 +32,11 @@ G_M59156_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x3C]
;; size=43 bbWeight=0.01 PerfScore 0.10
-G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r15d, dword ptr [(reloc)]
cmp ebx, r15d
- jge SHORT G_M59156_IG12
- ;; size=12 bbWeight=0.01 PerfScore 0.03
+ jge G_M59156_IG13
+ ;; size=16 bbWeight=0.01 PerfScore 0.03
G_M59156_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; static handle
mov r14, gword ptr [rdi]
@@ -67,41 +65,47 @@ G_M59156_IG05: ; bbWeight=0, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {},
G_M59156_IG06: ; bbWeight=99.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r13, r13
- je SHORT G_M59156_IG11
+ je SHORT G_M59156_IG09
;; size=5 bbWeight=99.99 PerfScore 124.99
G_M59156_IG07: ; bbWeight=99.87, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M59156_IG10
- ;; size=11 bbWeight=99.87 PerfScore 174.77
-G_M59156_IG08: ; bbWeight=49.94, gcrefRegs=6041 {rax rsi r13 r14}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ jne SHORT G_M59156_IG11
+ ;; size=8 bbWeight=99.87 PerfScore 149.81
+G_M59156_IG08: ; bbWeight=99.87, gcrefRegs=6040 {rsi r13 r14}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rsi]
+ ;; size=15 bbWeight=99.87 PerfScore 124.84
+G_M59156_IG09: ; bbWeight=99.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ inc ebx
+ cmp ebx, r15d
+ jge SHORT G_M59156_IG13
+ ;; size=7 bbWeight=99.99 PerfScore 149.99
+G_M59156_IG10: ; bbWeight=99.98, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M59156_IG06
+ ;; size=2 bbWeight=99.98 PerfScore 199.96
+G_M59156_IG11: ; bbWeight=49.94, gcrefRegs=6040 {rsi r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; PerfLabTests.CastingPerf2.Foo
- cmp qword ptr [rax], rdi
- je SHORT G_M59156_IG10
+ cmp qword ptr [rsi], rdi
+ je SHORT G_M59156_IG08
;; size=15 bbWeight=49.94 PerfScore 212.22
-G_M59156_IG09: ; bbWeight=24.97, gcrefRegs=6040 {rsi r13 r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M59156_IG12: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; PerfLabTests.CastingPerf2.Foo
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=24.97 PerfScore 74.90
-G_M59156_IG10: ; bbWeight=99.87, gcrefRegs=6001 {rax r13 r14}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
- ;; size=18 bbWeight=99.87 PerfScore 149.81
-G_M59156_IG11: ; bbWeight=99.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- inc ebx
- cmp ebx, r15d
- jl SHORT G_M59156_IG06
- ;; size=7 bbWeight=99.99 PerfScore 149.99
-G_M59156_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r13-r14]
+ jmp SHORT G_M59156_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M59156_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rsi r13-r14]
add rsp, 112
pop rbx
pop r13
@@ -111,7 +115,7 @@ G_M59156_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 43, PerfScore 886.87, instruction count 47, allocated bytes for code 188 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 206, prolog size 43, PerfScore 961.99, instruction count 50, allocated bytes for code 206 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
benchmarks.run_tiered.linux.x64.checked.mch
-28 (-36.36%) : 5433.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-21 (-29.58%) : 26528.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (Tier1)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> rbx this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.12) ref -> rax class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M1970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M1970_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M1970_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
; gcrRegs +[rdi]
call [System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object]
; gcrRegs -[rdi] +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M1970_IG05
- ;; size=17 bbWeight=1 PerfScore 4.75
-G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rdi, qword ptr [rbx]
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M1970_IG05
- ;; size=18 bbWeight=0.25 PerfScore 3.00
-G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- mov rsi, rax
- ; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M1970_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M1970_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=31 bbWeight=1 PerfScore 12.75
+G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 71, prolog size 12, PerfScore 15.19, instruction count 25, allocated bytes for code 71 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
+; Total bytes of code 50, prolog size 10, PerfScore 17.00, instruction count 16, allocated bytes for code 50 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-28 (-28.57%) : 50556.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -2,83 +2,63 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Reflection.MemberInfo>
-; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> r14 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MemberInfo>
+; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V06 cse0 [V06,T05] ( 3, 3 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15
push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi
- mov rbx, rdi
- mov r15, rsi
- ; gcrRegs +[r15]
- mov r14d, edx
- ;; size=25 bbWeight=1 PerfScore 7.25
-G_M29548_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
+ mov r15d, edx
+ ;; size=20 bbWeight=1 PerfScore 4.75
+G_M29548_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r14, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [r14]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- movzx rdx, r14b
- mov rdi, r15
+ movzx rdx, r15b
+ mov rdi, rbx
; gcrRegs +[rdi]
call [System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute]
- ; gcrRegs -[rsi rdi r15]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M29548_IG05
- ;; size=36 bbWeight=1 PerfScore 10.25
-G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M29548_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rbx rsi rdi]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [r14]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M29548_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=40 bbWeight=1 PerfScore 12.25
+G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
pop r14
pop r15
- pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=10 bbWeight=1 PerfScore 2.75
-; Total bytes of code 98, prolog size 16, PerfScore 23.19, instruction count 34, allocated bytes for code 98 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 70, prolog size 14, PerfScore 19.75, instruction count 23, allocated bytes for code 70 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -86,13 +66,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x09
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+25 (+21.93%) : 28975.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
@@ -9,68 +9,69 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
;
; Lcl frame size = 0
G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 16
- mov qword ptr [rsp+0x58], r15
+ sub rsp, 32
+ mov qword ptr [rsp+0x68], r15
+ mov qword ptr [rsp+0x60], r14
+ mov qword ptr [rsp+0x58], r13
mov qword ptr [rsp+0x50], rbx
- lea rbp, [rsp+0x10]
+ lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x1C]
- ;; size=27 bbWeight=1 PerfScore 7.75
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r15d, dword ptr [(reloc)]
cmp ebx, r15d
- jge SHORT G_M3904_IG07
- ;; size=12 bbWeight=1 PerfScore 3.25
-G_M3904_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, gword ptr [rdi]
+ jge SHORT G_M3904_IG04
+ mov rsi, 0xD1FFAB1E ; static handle
+ mov r14, gword ptr [rsi]
+ ; gcrRegs +[r14]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, 0xD1FFAB1E ; static handle
+ ;; size=53 bbWeight=1 PerfScore 7.25
+G_M3904_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M3904_IG06
- ;; size=21 bbWeight=4 PerfScore 15.00
-G_M3904_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M3904_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M3904_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
inc ebx
cmp ebx, r15d
jl SHORT G_M3904_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00
-G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00
+G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r14]
add rsp, 80
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 114, prolog size 27, PerfScore 45.50, instruction count 30, allocated bytes for code 114 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
+; Total bytes of code 139, prolog size 37, PerfScore 38.75, instruction count 34, allocated bytes for code 139 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -78,16 +79,20 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x13
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x1D
+ CountOfUnwindCodes: 12
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x1D UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 10 * 8 = 80 = 0x00050
- CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 11 * 8 = 88 = 0x00058
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
+ Scaled Small Offset: 12 * 8 = 96 = 0x00060
+ CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ Scaled Small Offset: 13 * 8 = 104 = 0x00068
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+26 (+22.61%) : 25181.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
@@ -9,68 +9,69 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
;
; Lcl frame size = 0
G_M34178_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 16
- mov qword ptr [rsp+0x58], r15
+ sub rsp, 32
+ mov qword ptr [rsp+0x68], r15
+ mov qword ptr [rsp+0x60], r14
+ mov qword ptr [rsp+0x58], r13
mov qword ptr [rsp+0x50], rbx
- lea rbp, [rsp+0x10]
+ lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x1C]
- ;; size=27 bbWeight=1 PerfScore 7.75
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M34178_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r15d, dword ptr [(reloc)]
cmp ebx, r15d
- jge SHORT G_M34178_IG07
- ;; size=12 bbWeight=1 PerfScore 3.25
-G_M34178_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, gword ptr [rdi]
+ jge SHORT G_M34178_IG04
+ mov rsi, 0xD1FFAB1E ; static handle
+ mov r14, gword ptr [rsi]
+ ; gcrRegs +[r14]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call [CORINFO_HELP_CHKCASTARRAY]
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, 0xD1FFAB1E ; static handle
+ ;; size=54 bbWeight=1 PerfScore 9.25
+G_M34178_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M34178_IG06
- ;; size=21 bbWeight=4 PerfScore 15.00
-G_M34178_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M34178_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M34178_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M34178_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
inc ebx
cmp ebx, r15d
jl SHORT G_M34178_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00
-G_M34178_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=37 bbWeight=4 PerfScore 26.00
+G_M34178_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r14]
add rsp, 80
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 115, prolog size 27, PerfScore 46.50, instruction count 30, allocated bytes for code 115 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
+; Total bytes of code 141, prolog size 37, PerfScore 48.75, instruction count 34, allocated bytes for code 141 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -78,16 +79,20 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x13
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x1D
+ CountOfUnwindCodes: 12
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x1D UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 10 * 8 = 80 = 0x00050
- CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 11 * 8 = 88 = 0x00058
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
+ Scaled Small Offset: 12 * 8 = 96 = 0x00060
+ CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ Scaled Small Offset: 13 * 8 = 104 = 0x00068
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+26 (+22.61%) : 55997.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
@@ -9,68 +9,69 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
;
; Lcl frame size = 0
G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 16
- mov qword ptr [rsp+0x58], r15
+ sub rsp, 32
+ mov qword ptr [rsp+0x68], r15
+ mov qword ptr [rsp+0x60], r14
+ mov qword ptr [rsp+0x58], r13
mov qword ptr [rsp+0x50], rbx
- lea rbp, [rsp+0x10]
+ lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x1C]
- ;; size=27 bbWeight=1 PerfScore 7.75
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r15d, dword ptr [(reloc)]
cmp ebx, r15d
- jge SHORT G_M40467_IG07
- ;; size=12 bbWeight=1 PerfScore 3.25
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, gword ptr [rdi]
+ jge SHORT G_M40467_IG04
+ mov rsi, 0xD1FFAB1E ; static handle
+ mov r14, gword ptr [rsi]
+ ; gcrRegs +[r14]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call [CORINFO_HELP_CHKCASTARRAY]
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, 0xD1FFAB1E ; static handle
+ ;; size=54 bbWeight=1 PerfScore 9.25
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M40467_IG06
- ;; size=21 bbWeight=4 PerfScore 15.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M40467_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
inc ebx
cmp ebx, r15d
jl SHORT G_M40467_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=37 bbWeight=4 PerfScore 26.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r14]
add rsp, 80
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 115, prolog size 27, PerfScore 46.50, instruction count 30, allocated bytes for code 115 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
+; Total bytes of code 141, prolog size 37, PerfScore 48.75, instruction count 34, allocated bytes for code 141 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -78,16 +79,20 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x13
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x1D
+ CountOfUnwindCodes: 12
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x1D UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 10 * 8 = 80 = 0x00050
- CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 11 * 8 = 88 = 0x00058
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
+ Scaled Small Offset: 12 * 8 = 96 = 0x00060
+ CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ Scaled Small Offset: 13 * 8 = 104 = 0x00068
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
coreclr_tests.run.linux.x64.checked.mch
-28 (-36.36%) : 1209.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-28 (-36.36%) : 592272.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-25 (-35.21%) : 593421.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -2,70 +2,50 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp 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) long -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rsi
- mov rbx, rsi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rsi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rsi+0x38]
+ mov rbx, qword ptr [rdi]
+ mov rdi, rbx
mov rsi, rdx
; gcrRegs +[rsi]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx rsi] +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M51557_IG05
- ;; size=23 bbWeight=1 PerfScore 6.75
-G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M51557_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, rbx
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M51557_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M51557_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=30 bbWeight=1 PerfScore 7.25
+G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 71, prolog size 12, PerfScore 16.19, instruction count 25, allocated bytes for code 71 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 46, prolog size 10, PerfScore 11.25, instruction count 15, allocated bytes for code 46 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,11 +53,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+44 (+3.99%) : 387210.dasm - ILCompiler.InstructionSetSupport:GetHardwareIntrinsicId(int,Internal.TypeSystem.TypeDesc):System.String (Tier1)
@@ -13,63 +13,59 @@
; V01 arg1 [V01,T00] ( 6, 3.24) ref -> rbx class-hnd single-def <Internal.TypeSystem.TypeDesc>
; V02 loc0 [V02,T04] ( 53, 2.18) ref -> r14 class-hnd <Internal.TypeSystem.MetadataType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T26] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.InternalCompilerErrorException>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V06 tmp3 [V06,T20] ( 3, 0.07) long -> rdi "fgMakeTemp is creating a new local variable"
-; V07 tmp4 [V07,T19] ( 5, 0.21) ref -> r14 class-hnd "spilling QMark2" <Internal.TypeSystem.MetadataType>
-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V09 tmp6 [V09,T23] ( 3, 0.01) long -> rdi "fgMakeTemp is creating a new local variable"
-; V10 tmp7 [V10,T22] ( 5, 0.03) ref -> r14 class-hnd "spilling QMark2" <Internal.TypeSystem.MetadataType>
-; V11 tmp8 [V11,T10] ( 7, 0.61) ref -> rax "guarded devirt return temp"
-;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V13 tmp10 [V13,T24] ( 4, 0.01) ref -> rax "guarded devirt return temp"
-;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V15 tmp12 [V15,T14] ( 6, 0.56) ref -> rcx "guarded devirt return temp"
+; V04 tmp1 [V04,T24] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.InternalCompilerErrorException>
+; V05 tmp2 [V05,T10] ( 7, 0.61) ref -> rax "guarded devirt return temp"
+;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V07 tmp4 [V07,T22] ( 4, 0.01) ref -> rax "guarded devirt return temp"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V09 tmp6 [V09,T14] ( 6, 0.56) ref -> rcx "guarded devirt return temp"
+;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V11 tmp8 [V11,T20] ( 4, 0.06) ref -> rax "guarded devirt return temp"
+;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V13 tmp10 [V13,T09] ( 7, 0.92) ref -> rcx "guarded devirt return temp"
+;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V15 tmp12 [V15,T18] ( 2, 0.36) ref -> rax single-def "guarded devirt return temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V17 tmp14 [V17,T21] ( 4, 0.06) ref -> rax "guarded devirt return temp"
-;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V19 tmp16 [V19,T09] ( 7, 0.92) ref -> rax "guarded devirt return temp"
-;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V21 tmp18 [V21,T18] ( 2, 0.36) ref -> rax single-def "guarded devirt return temp"
-;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp20 [V23,T05] ( 3, 2 ) int -> rax "Inline return value spill temp"
-; V24 tmp21 [V24,T03] ( 3, 2.98) int -> rax single-def "Inline stloc first use temp"
-;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V26 tmp23 [V26,T11] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V28 tmp25 [V28,T12] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V30 tmp27 [V30,T08] ( 2, 0.82) int -> rdi "spilling unroll qmark"
+; V17 tmp14 [V17,T05] ( 3, 2 ) int -> rax "Inline return value spill temp"
+; V18 tmp15 [V18,T03] ( 3, 2.98) int -> rax single-def "Inline stloc first use temp"
+;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
+;* V20 tmp17 [V20,T11] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
+;* V22 tmp19 [V22,T12] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
+; V24 tmp21 [V24,T08] ( 2, 0.82) int -> rdi "spilling unroll qmark"
+;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+;* V26 tmp23 [V26 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+;* V28 tmp25 [V28 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+;* V30 tmp27 [V30 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V31 tmp28 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V32 tmp29 [V32 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V36 tmp33 [V36 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V37 tmp34 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V40 tmp37 [V40 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V41 tmp38 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V43 tmp40 [V43,T02] ( 3, 3.89) ref -> rax "Single return block return value"
-; V44 tmp41 [V44,T27] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V45 tmp42 [V45,T28] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V46 tmp43 [V46,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V47 tmp44 [V47,T30] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V48 tmp45 [V48,T31] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V49 tmp46 [V49,T32] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V50 tmp47 [V50,T33] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V51 tmp48 [V51,T34] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V52 tmp49 [V52,T35] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V53 tmp50 [V53,T36] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V54 cse0 [V54,T13] ( 3, 0.57) ref -> rax "CSE - conservative"
-; V55 cse1 [V55,T15] ( 3, 0.53) ref -> rax "CSE - conservative"
-; V56 cse2 [V56,T16] ( 3, 0.53) ref -> rcx "CSE - conservative"
-; V57 cse3 [V57,T17] ( 3, 0.53) ref -> rax "CSE - conservative"
-; V58 cse4 [V58,T07] ( 8, 1.23) long -> r15 multi-def "CSE - moderate"
-; V59 rat0 [V59,T06] ( 5, 1.46) ref -> r14 class-hnd "replacement local" <Internal.TypeSystem.MetadataType>
-; V60 rat1 [V60,T25] ( 3, 1.23) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V37 tmp34 [V37,T02] ( 3, 3.89) ref -> rax "Single return block return value"
+; V38 tmp35 [V38,T25] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V39 tmp36 [V39,T26] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V40 tmp37 [V40,T27] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V41 tmp38 [V41,T28] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V42 tmp39 [V42,T29] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V43 tmp40 [V43,T30] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V44 tmp41 [V44,T31] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V45 tmp42 [V45,T32] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V46 tmp43 [V46,T33] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V47 tmp44 [V47,T34] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V48 cse0 [V48,T13] ( 3, 0.57) ref -> rax "CSE - conservative"
+; V49 cse1 [V49,T15] ( 3, 0.53) ref -> rax "CSE - conservative"
+; V50 cse2 [V50,T16] ( 3, 0.53) ref -> rcx "CSE - conservative"
+; V51 cse3 [V51,T17] ( 3, 0.53) ref -> rcx "CSE - conservative"
+; V52 cse4 [V52,T07] ( 8, 1.23) long -> r15 multi-def "CSE - moderate"
+; V53 rat0 [V53,T06] ( 5, 1.46) ref -> r14 class-hnd "replacement local" <Internal.TypeSystem.MetadataType>
+; V54 rat1 [V54,T21] ( 5, 0.03) ref -> r14 class-hnd "replacement local" <Internal.TypeSystem.MetadataType>
+; V55 rat2 [V55,T19] ( 5, 0.19) ref -> r14 class-hnd "replacement local" <Internal.TypeSystem.MetadataType>
+; V56 rat3 [V56,T23] ( 3, 1.23) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
@@ -125,7 +121,7 @@ G_M4142_IG08: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, b
test r14, r14
je SHORT G_M4142_IG04
cmp r15d, 3
- jne G_M4142_IG43
+ jne G_M4142_IG42
jmp SHORT G_M4142_IG10
;; size=17 bbWeight=0.20 PerfScore 0.92
G_M4142_IG09: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
@@ -174,40 +170,40 @@ G_M4142_IG14: ; bbWeight=0.20, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {
je SHORT G_M4142_IG17
;; size=5 bbWeight=0.20 PerfScore 0.26
G_M4142_IG15: ; bbWeight=0.10, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref
- jmp G_M4142_IG32
+ jmp G_M4142_IG31
;; size=5 bbWeight=0.10 PerfScore 0.20
G_M4142_IG16: ; bbWeight=0.19, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rax, gword ptr [r14+0x60]
; gcrRegs +[rax]
test rax, rax
- je G_M4142_IG54
+ je G_M4142_IG53
jmp SHORT G_M4142_IG14
;; size=15 bbWeight=0.19 PerfScore 1.00
G_M4142_IG17: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
cmp qword ptr [r14], r15
- jne G_M4142_IG34
+ jne G_M4142_IG33
;; size=9 bbWeight=0.20 PerfScore 0.82
G_M4142_IG18: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [r14+0x60]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M4142_IG55
+ je G_M4142_IG54
;; size=13 bbWeight=0.18 PerfScore 0.58
G_M4142_IG19: ; bbWeight=0.20, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
- je SHORT G_M4142_IG26
+ je SHORT G_M4142_IG25
;; size=5 bbWeight=0.20 PerfScore 0.26
G_M4142_IG20: ; bbWeight=0.10, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], 2
- jne SHORT G_M4142_IG26
+ jne SHORT G_M4142_IG25
;; size=6 bbWeight=0.10 PerfScore 0.41
G_M4142_IG21: ; bbWeight=0.05, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x0C], 0xD1FFAB1E
- jne SHORT G_M4142_IG26
+ jne SHORT G_M4142_IG25
cmp qword ptr [r14], r15
- jne G_M4142_IG41
+ jne G_M4142_IG39
;; size=18 bbWeight=0.05 PerfScore 0.41
G_M4142_IG22: ; bbWeight=0.03, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
@@ -221,46 +217,36 @@ G_M4142_IG23: ; bbWeight=0.03, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, b
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- je SHORT G_M4142_IG26
+ je SHORT G_M4142_IG25
;; size=8 bbWeight=0.03 PerfScore 0.04
-G_M4142_IG24: ; bbWeight=0.01, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.MetadataType
+G_M4142_IG24: ; bbWeight=0.01, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r14], rdi
- je SHORT G_M4142_IG26
- ;; size=15 bbWeight=0.01 PerfScore 0.06
-G_M4142_IG25: ; bbWeight=0.01, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- mov rsi, rax
- ; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- ;; size=11 bbWeight=0.01 PerfScore 0.01
-G_M4142_IG26: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ jne G_M4142_IG40
+ ;; size=19 bbWeight=0.01 PerfScore 0.06
+G_M4142_IG25: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
cmp qword ptr [r14], r15
- jne G_M4142_IG35
+ jne G_M4142_IG34
;; size=9 bbWeight=0.20 PerfScore 0.82
-G_M4142_IG27: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [r14+0x68]
- ; gcrRegs +[rax]
- test rax, rax
- je G_M4142_IG42
+G_M4142_IG26: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [r14+0x68]
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je G_M4142_IG41
;; size=13 bbWeight=0.18 PerfScore 0.58
-G_M4142_IG28: ; bbWeight=0.20, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref
- test rax, rax
+G_M4142_IG27: ; bbWeight=0.20, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref
+ test rcx, rcx
je G_M4142_IG04
;; size=9 bbWeight=0.20 PerfScore 0.26
-G_M4142_IG29: ; bbWeight=0.10, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref
- cmp dword ptr [rax+0x08], 29
+G_M4142_IG28: ; bbWeight=0.10, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref
+ cmp dword ptr [rcx+0x08], 29
jne G_M4142_IG04
;; size=10 bbWeight=0.10 PerfScore 0.41
-G_M4142_IG30: ; bbWeight=0.20, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref
- vmovups ymm0, ymmword ptr [rax+0x0C]
+G_M4142_IG29: ; bbWeight=0.20, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref
+ vmovups ymm0, ymmword ptr [rcx+0x0C]
vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00]
- vmovups ymm1, ymmword ptr [rax+0x26]
+ vmovups ymm1, ymmword ptr [rcx+0x26]
vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -10
vptest ymm0, ymm0
sete dil
@@ -268,22 +254,22 @@ G_M4142_IG30: ; bbWeight=0.20, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {
test edi, edi
je G_M4142_IG04
;; size=50 bbWeight=0.20 PerfScore 4.39
-G_M4142_IG31: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M4142_IG30: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
mov r15, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r14], r15
- jne G_M4142_IG52
+ jne G_M4142_IG51
mov rax, gword ptr [r14+0x60]
; gcrRegs +[rax]
test rax, rax
- je G_M4142_IG50
...
+19 (+4.80%) : 248124.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b_100(System.Object):this (Tier1)
@@ -8,25 +8,25 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ThreadPoolTaskScheduler+<>c>
-; V01 arg1 [V01,T02] ( 6, 4.12) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T03] ( 6, 4 ) ref -> rbx class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T12] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 13, 17.75) ref -> r15 class-hnd "spilling QMark2" <System.Threading.Tasks.Task>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V07 tmp5 [V07,T06] ( 4, 2.50) ubyte -> r14 "Inline return value spill temp"
-; V08 tmp6 [V08,T03] ( 4, 3 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V09 tmp7 [V09,T13] ( 3, 1 ) ubyte -> r14 "Inline return value spill temp"
-; V10 tmp8 [V10,T08] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V12 tmp10 [V12,T14] ( 2, 1 ) int -> rax "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 2, 2 ) byref -> rsi single-def "argument with side effect"
-; V14 cse0 [V14,T10] ( 3, 1.50) ref -> rsi "CSE - moderate"
-; V15 cse1 [V15,T11] ( 3, 1.50) ref -> rdi "CSE - moderate"
-; V16 rat0 [V16,T07] ( 3, 2 ) byref -> rsi "TLS field access"
-; V17 rat1 [V17,T04] ( 3, 3 ) long -> rax "TLS access"
-; V18 rat2 [V18,T05] ( 3, 3 ) long -> rsi "ThreadStaticBlockBase access"
-; V19 rat3 [V19,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <System.Threading.Tasks.Task>
+;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V04 tmp2 [V04,T00] ( 10, 15 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V06 tmp4 [V06,T07] ( 4, 2.50) ubyte -> r14 "Inline return value spill temp"
+; V07 tmp5 [V07,T04] ( 4, 3 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V08 tmp6 [V08,T13] ( 3, 1 ) ubyte -> r14 "Inline return value spill temp"
+; V09 tmp7 [V09,T09] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V11 tmp9 [V11,T14] ( 2, 1 ) int -> rax "Inline stloc first use temp"
+; V12 tmp10 [V12,T10] ( 2, 2 ) byref -> rsi single-def "argument with side effect"
+; V13 cse0 [V13,T11] ( 3, 1.50) ref -> rsi "CSE - moderate"
+; V14 cse1 [V14,T12] ( 3, 1.50) ref -> rdi "CSE - moderate"
+; V15 rat0 [V15,T08] ( 3, 2 ) byref -> rsi "TLS field access"
+; V16 rat1 [V16,T05] ( 3, 3 ) long -> rax "TLS access"
+; V17 rat2 [V17,T06] ( 3, 3 ) long -> rsi "ThreadStaticBlockBase access"
+; V18 rat3 [V18,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V19 rat4 [V19,T02] ( 5, 7 ) ref -> r15 class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 8
@@ -49,7 +49,7 @@ G_M60851_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M60851_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
cmp qword ptr [rax], rdi
- jne G_M60851_IG21
+ jne G_M60851_IG20
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M60851_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
test rax, rax
@@ -69,34 +69,24 @@ G_M60851_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov r15, rbx
; gcrRegs +[r15]
test r15, r15
- je SHORT G_M60851_IG09
+ je SHORT G_M60851_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M60851_IG07: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG07: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
cmp qword ptr [r15], rdi
- je SHORT G_M60851_IG09
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M60851_IG08: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rbx rsi] +[rax]
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M60851_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ jne G_M60851_IG21
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M60851_IG08: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
or dword ptr [r15+0x34], 0x20000
mov rdi, gword ptr [r15+0x28]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M60851_IG13
- ;; size=17 bbWeight=1 PerfScore 6.25
-G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rdi+0x38], 1
je SHORT G_M60851_IG12
+ ;; size=17 bbWeight=1 PerfScore 6.25
+G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdi+0x38], 1
+ je SHORT G_M60851_IG11
add rdi, 64
; gcrRegs -[rdi]
; byrRegs +[rdi]
@@ -109,18 +99,18 @@ G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0000
cmp dword ptr [rdi+0x20], 0
setne r14b
;; size=33 bbWeight=0.50 PerfScore 5.88
-G_M60851_IG11: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- jmp SHORT G_M60851_IG14
+ jmp SHORT G_M60851_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60851_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG11: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov r14d, 1
- jmp SHORT G_M60851_IG14
+ jmp SHORT G_M60851_IG13
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M60851_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
xor r14d, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M60851_IG14: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG13: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
xor edi, edi
test r14d, r14d
sete dil
@@ -130,9 +120,9 @@ G_M60851_IG14: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
setne al
movzx rax, al
test edi, eax
- je SHORT G_M60851_IG18
+ je SHORT G_M60851_IG17
;; size=33 bbWeight=1 PerfScore 6.50
-G_M60851_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
@@ -147,14 +137,14 @@ G_M60851_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
; byrRegs +[rsi]
add rsi, 16
;; size=56 bbWeight=0.50 PerfScore 7.50
-G_M60851_IG16: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0040 {rsi}, byref
+G_M60851_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0040 {rsi}, byref
add rsi, 80
mov rdi, r15
; gcrRegs +[rdi]
xor rdx, rdx
; gcrRegs +[rdx]
;; size=9 bbWeight=0.50 PerfScore 0.38
-G_M60851_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -163,25 +153,25 @@ G_M60851_IG17: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M60851_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60851_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdx rdi]
; byrRegs -[rsi]
mov edi, dword ptr [r15+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
- je SHORT G_M60851_IG20
+ je SHORT G_M60851_IG19
lea rdi, bword ptr [r15+0x34]
; byrRegs +[rdi]
mov eax, dword ptr [r15+0x34]
or eax, 0xD1FFAB1E
xchg dword ptr [rdi], eax
test eax, 0xD1FFAB1E
- jne SHORT G_M60851_IG20
+ jne SHORT G_M60851_IG19
mov rdi, r15
; gcrRegs +[rdi]
; byrRegs -[rdi]
;; size=43 bbWeight=0.50 PerfScore 13.88
-G_M60851_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -190,7 +180,7 @@ G_M60851_IG19: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M60851_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60851_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi r15]
add rsp, 8
pop rbx
@@ -199,7 +189,7 @@ G_M60851_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M60851_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M60851_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -209,10 +199,22 @@ G_M60851_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
jmp G_M60851_IG04
;; size=23 bbWeight=0 PerfScore 0.00
+G_M60851_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[rbx rsi] +[rax]
+ ; gcr arg pop 0
+ mov r15, rax
+ ; gcrRegs +[r15]
+ jmp G_M60851_IG08
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M60851_IG22: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx] +[r15]
+ ; gcrRegs -[rax]
xor r14d, r14d
- jmp G_M60851_IG11
+ jmp G_M60851_IG10
;; size=8 bbWeight=0 PerfScore 0.00
G_M60851_IG23: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov edi, 4
@@ -221,10 +223,10 @@ G_M60851_IG23: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; byrRegs +[rsi]
- jmp G_M60851_IG16
+ jmp G_M60851_IG15
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 15, PerfScore 63.62, instruction count 107, allocated bytes for code 396 (MethodHash=8aa4124c) for method System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
+; Total bytes of code 415, prolog size 15, PerfScore 64.50, instruction count 109, allocated bytes for code 415 (MethodHash=8aa4124c) for method System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
; ============================================================
Unwind Info:
+44 (+400.00%) : 495524.dasm - T:TestEntryPoint():int (FullOpts)
@@ -2,7 +2,7 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
+; rbp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
@@ -11,24 +11,52 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+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 ) long -> 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,T01] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V04 rat0 [V04,T00] ( 5, 7.50) ref -> rax class-hnd "replacement local" <<unknown class>>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rax
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 100
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M32114_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- ret
+G_M32114_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M32114_IG05
+ ;; size=15 bbWeight=1 PerfScore 1.50
+G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [rax], rcx
+ je SHORT G_M32114_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M32114_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ je SHORT G_M32114_IG08
;; size=5 bbWeight=1 PerfScore 1.25
+G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov eax, 100
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M32114_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 11, prolog size 1, PerfScore 2.50, instruction count 4, allocated bytes for code 11 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 7.94, instruction count 17, allocated bytes for code 55 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
@@ -41,4 +69,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries.crossgen2.linux.x64.checked.mch
-39 (-46.99%) : 224949.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)
@@ -3,72 +3,48 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r15 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rbx class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M31417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15
- push r14
- push r13
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x28], rdi
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rsi
+ push rax
+ mov qword ptr [rsp], rdi
+ mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=27 bbWeight=1 PerfScore 7.25
-G_M31417_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov r14, rbx
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M31417_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov r13, qword ptr [r14]
- mov rdi, qword ptr [r15]
+ mov r15, rsi
+ ; gcrRegs +[r15]
+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M31417_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- cmp r13, rax
- je SHORT G_M31417_IG05
- ;; size=17 bbWeight=0.25 PerfScore 2.06
-G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
+ ; gcr arg pop 0
mov rdi, rax
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rbx rsi] +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- ;; size=15 bbWeight=0.12 PerfScore 0.47
-G_M31417_IG05: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r14
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M31417_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+ ; gcrRegs -[rsi r15] +[rax]
+ ; gcr arg pop 0
+ nop
+ ;; size=22 bbWeight=1 PerfScore 8.75
+G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
- pop r14
pop r15
- pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=8 bbWeight=1 PerfScore 2.25
-; Total bytes of code 83, prolog size 21, PerfScore 15.28, instruction count 30, allocated bytes for code 83 (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 44, prolog size 8, PerfScore 15.50, instruction count 16, allocated bytes for code 44 (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:
@@ -76,14 +52,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-39 (-46.99%) : 201928.dasm - System.Linq.ParallelQuery1+<>c__11[System.Canon,System.Canon]:b1_0(System.Canon):System.__Canon:this (FullOpts)
@@ -3,72 +3,48 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r15 this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rbx class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M42611_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15
- push r14
- push r13
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x28], rdi
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rsi
+ push rax
+ mov qword ptr [rsp], rdi
+ mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=27 bbWeight=1 PerfScore 7.25
-G_M42611_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov r14, rbx
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M42611_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M42611_IG03: ; bbWeight=0.25, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov r13, qword ptr [r14]
- mov rdi, qword ptr [r15]
+ mov r15, rsi
+ ; gcrRegs +[r15]
+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M42611_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- cmp r13, rax
- je SHORT G_M42611_IG05
- ;; size=17 bbWeight=0.25 PerfScore 2.06
-G_M42611_IG04: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
+ ; gcr arg pop 0
mov rdi, rax
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rbx rsi] +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- ;; size=15 bbWeight=0.12 PerfScore 0.47
-G_M42611_IG05: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r14
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M42611_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+ ; gcrRegs -[rsi r15] +[rax]
+ ; gcr arg pop 0
+ nop
+ ;; size=22 bbWeight=1 PerfScore 8.75
+G_M42611_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
- pop r14
pop r15
- pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=8 bbWeight=1 PerfScore 2.25
-; Total bytes of code 83, prolog size 21, PerfScore 15.28, instruction count 30, allocated bytes for code 83 (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 44, prolog size 8, PerfScore 15.50, instruction count 16, allocated bytes for code 44 (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:
@@ -76,14 +52,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
-32 (-45.71%) : 1981.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -3,68 +3,44 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rbx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> r15 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 6.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r15, rbx
- ; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov r14, qword ptr [r15]
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- cmp r14, rax
- je SHORT G_M8451_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.56
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
+ ; gcr arg pop 0
mov rdi, rax
mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rbx rsi] +[rax]
- mov r15, rax
- ; gcrRegs +[r15]
- ;; size=15 bbWeight=0.12 PerfScore 0.47
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r15
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=19 bbWeight=1 PerfScore 6.75
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop r14
- pop r15
- pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 70, prolog size 16, PerfScore 13.78, instruction count 26, allocated bytes for code 70 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 11.00, instruction count 12, allocated bytes for code 38 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -72,13 +48,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+30 (+3.81%) : 148249.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (FullOpts)
@@ -9,44 +9,43 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 27 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T07] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 this [V00,T00] ( 16, 23 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T08] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T13] ( 4, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V03 loc1 [V03,T19] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T18] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 7, 9 ) ref -> [rbp-0x68] class-hnd EH-live single-def <<unknown class>>
; V05 loc3 [V05,T20] ( 4, 2 ) int -> r12 single-def
-;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T15] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
; V09 tmp2 [V09,T01] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup"
; V10 tmp3 [V10,T16] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
; V11 tmp4 [V11 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V12 tmp5 [V12,T18] ( 3, 2.25) ref -> [rbp-0x70] spill-single-def "CASTCLASS eval op1"
-; V13 tmp6 [V13,T25] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V14 tmp7 [V14,T09] ( 6, 4.75) ref -> [rbp-0x78] class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp8 [V15,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
-; V16 tmp9 [V16,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1"
-;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V18 tmp11 [V18 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V19 tmp12 [V19,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
-; V20 tmp13 [V20,T02] ( 3, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
-; V21 tmp14 [V21 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP
-; V22 tmp15 [V22 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
-; V23 tmp16 [V23 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP
-; V24 tmp17 [V24 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._length (fldOffset=0x8)" P-DEP
-; V25 tmp18 [V25,T11] ( 2, 4 ) long -> rdi "argument with side effect"
-; V26 tmp19 [V26,T22] ( 2, 2 ) long -> rdi "argument with side effect"
-; V27 tmp20 [V27,T23] ( 2, 2 ) long -> rsi "argument with side effect"
-; V28 tmp21 [V28,T05] ( 2, 8 ) long -> rsi "argument with side effect"
-; V29 tmp22 [V29,T24] ( 2, 2 ) long -> rsi "argument with side effect"
-; V30 tmp23 [V30,T21] ( 2, 2 ) byref -> rbx single-def "argument with side effect"
-; V31 tmp24 [V31,T26] ( 2, 1 ) long -> rdi "argument with side effect"
-; V32 PSPSym [V32,T27] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
-; V33 cse0 [V33,T10] ( 2, 4.50) long -> r13 hoist "CSE - moderate"
-; V34 cse1 [V34,T14] ( 4, 3 ) long -> r14 "CSE - moderate"
-; V35 cse2 [V35,T08] ( 8, 6.75) long -> registers multi-def "CSE - moderate"
-; V36 cse3 [V36,T06] ( 11, 7.75) long -> r15 "CSE - aggressive"
-; TEMP_01 long -> [rbp-0x80]
+; V12 tmp5 [V12,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
+; V13 tmp6 [V13,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1"
+; V14 tmp7 [V14,T21] ( 2, 2 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg"
+; V15 tmp8 [V15 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V16 tmp9 [V16,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
+; V17 tmp10 [V17,T02] ( 3, 16 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V18 tmp11 [V18 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP
+; V19 tmp12 [V19 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V20 tmp13 [V20 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V15._items (fldOffset=0x0)" P-DEP
+; V21 tmp14 [V21 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V15._length (fldOffset=0x8)" P-DEP
+; V22 tmp15 [V22,T11] ( 2, 4 ) long -> rdi "argument with side effect"
+; V23 tmp16 [V23,T23] ( 2, 2 ) long -> rdi "argument with side effect"
+; V24 tmp17 [V24,T24] ( 2, 2 ) long -> rsi "argument with side effect"
+; V25 tmp18 [V25,T25] ( 2, 2 ) long -> rdi "argument with side effect"
+; V26 tmp19 [V26,T07] ( 2, 8 ) long -> rsi "argument with side effect"
+; V27 tmp20 [V27,T26] ( 2, 2 ) long -> rsi "argument with side effect"
+; V28 tmp21 [V28,T22] ( 2, 2 ) byref -> rbx single-def "argument with side effect"
+; V29 tmp22 [V29,T27] ( 2, 1 ) long -> rdi "argument with side effect"
+; V30 PSPSym [V30,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V31 cse0 [V31,T10] ( 2, 4.50) long -> r12 hoist "CSE - aggressive"
+; V32 cse1 [V32,T14] ( 4, 3 ) long -> r14 "CSE - moderate"
+; V33 cse2 [V33,T09] ( 8, 6.75) long -> registers multi-def "CSE - aggressive"
+; V34 cse3 [V34,T28] ( 2, 1 ) int -> rdi "CSE - conservative"
+; V35 cse4 [V35,T05] ( 11, 8 ) long -> r15 "CSE - aggressive"
+; V36 cse5 [V36,T06] ( 9, 8 ) byref -> [rbp-0x88] multi-def "CSE - aggressive"
;
; Lcl frame size = 104
@@ -72,7 +71,7 @@ G_M47297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M47297_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
test rbx, rbx
- je G_M47297_IG25
+ je G_M47297_IG22
mov r15, qword ptr [rdi]
mov rdi, r15
; gcrRegs -[rdi]
@@ -124,18 +123,21 @@ G_M47297_IG05: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000
; byrRegs +[rsi]
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
- add rdi, 16
+ lea rbx, bword ptr [rdi+0x10]
+ ; byrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs -[rdi]
; byrRegs +[rdi]
call [CORINFO_HELP_ASSIGN_BYREF]
; gcrRegs -[r14]
+ ; byrRegs -[rbx]
movsq
mov edi, dword ptr [r13+0x08]
; byrRegs -[rdi]
mov rbx, gword ptr [rbp-0x60]
; gcrRegs +[rbx]
mov dword ptr [rbx+0x08], edi
- ;; size=31 bbWeight=0.50 PerfScore 4.88
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M47297_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -161,7 +163,7 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
mov r13, rax
; gcrRegs +[r13]
test r13, r13
- je G_M47297_IG14
+ je G_M47297_IG11
mov rdi, r15
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax]
@@ -189,10 +191,13 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; gcrRegs +[rbx]
lea rdi, bword ptr [rbx+0x10]
; byrRegs +[rdi]
+ mov r14, rdi
+ ; byrRegs +[r14]
+ mov rdi, r14
call [CORINFO_HELP_ASSIGN_BYREF]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r14]
movsq
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=96 bbWeight=0.50 PerfScore 14.00
G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -203,7 +208,7 @@ G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13]
; byrRegs -[rsi rdi]
mov rdi, r15
@@ -226,52 +231,42 @@ G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs -[rdi]
mov edi, dword ptr [rbp-0x38]
mov dword ptr [r14+0x18], edi
- mov rax, gword ptr [r14+0x10]
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x70], rax
- ; GC ptr vars +{V12}
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M47297_IG15
- ;; size=73 bbWeight=0.50 PerfScore 9.75
-G_M47297_IG10: ; bbWeight=0.25, gcVars=0000000000040001 {V00 V12}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov gword ptr [rbp-0x78], rcx
+ lea rdi, bword ptr [r14+0x10]
+ ; byrRegs +[rdi]
+ mov rax, rdi
+ ; byrRegs +[rax]
+ mov bword ptr [rbp-0x88], rax
+ ; GC ptr vars +{V36}
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V14}
- mov rdx, qword ptr [rcx]
- mov qword ptr [rbp-0x80], rdx
mov rdi, r15
+ ; byrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov rdx, qword ptr [rbp-0x80]
- cmp rdx, rax
- je SHORT G_M47297_IG12
- ;; size=29 bbWeight=0.25 PerfScore 2.38
-G_M47297_IG11: ; bbWeight=0.12, gcVars=0000000000040001 {V00 V12}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V14}
mov rdi, rax
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, bword ptr [rbp-0x78]
+ ; byrRegs +[rsi]
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- ; GC ptr vars -{V12}
+ ; byrRegs -[rsi]
+ ; GC ptr vars -{V14}
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax
- ; GC ptr vars +{V14}
- ;; size=17 bbWeight=0.12 PerfScore 0.66
-G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rbp-0x78]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 1
- jne SHORT G_M47297_IG15
+ mov gword ptr [rbp-0x70], rax
+ ; GC ptr vars +{V06}
+ test rax, rax
+ je SHORT G_M47297_IG12
+ mov edi, dword ptr [rax+0x08]
+ cmp edi, 1
+ jne SHORT G_M47297_IG12
mov rdi, r15
+ ; GC ptr vars -{V06 V36}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax rbx]
; gcr arg pop 0
- mov r15, gword ptr [rbp-0x78]
+ mov r15, gword ptr [rbp-0x70]
; gcrRegs +[r15]
mov rsi, gword ptr [r15+0x10]
; gcrRegs +[rsi]
@@ -279,13 +274,12 @@ G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefR
; gcrRegs +[rdi]
mov r11, rax
xor edx, edx
- ; GC ptr vars -{V14}
call [rax]
; gcrRegs -[rsi rdi r13 r15]
; gcr arg pop 0
mov dword ptr [r14+0x08], r12d
- ;; size=41 bbWeight=0.50 PerfScore 8.00
-G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=144 bbWeight=0.50 PerfScore 21.88
+G_M47297_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
pop r12
@@ -295,7 +289,7 @@ G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG11: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14] +[rbx]
mov rdi, r14
call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE]
@@ -308,14 +302,19 @@ G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs +[rsi]
mov r14, gword ptr [rbp-0x60]
; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
+ lea rax, bword ptr [r14+0x10]
+ mov r13, rax
+ ; byrRegs +[r13]
...
+30 (+3.81%) : 177058.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (FullOpts)
@@ -9,44 +9,43 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 27 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T07] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 this [V00,T00] ( 16, 23 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T08] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T13] ( 4, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V03 loc1 [V03,T19] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T18] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 7, 9 ) ref -> [rbp-0x68] class-hnd EH-live single-def <<unknown class>>
; V05 loc3 [V05,T20] ( 4, 2 ) int -> r12 single-def
-;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T15] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
; V09 tmp2 [V09,T01] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup"
; V10 tmp3 [V10,T16] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
; V11 tmp4 [V11 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V12 tmp5 [V12,T18] ( 3, 2.25) ref -> [rbp-0x70] spill-single-def "CASTCLASS eval op1"
-; V13 tmp6 [V13,T25] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V14 tmp7 [V14,T09] ( 6, 4.75) ref -> [rbp-0x78] class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp8 [V15,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
-; V16 tmp9 [V16,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1"
-;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V18 tmp11 [V18 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V19 tmp12 [V19,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
-; V20 tmp13 [V20,T02] ( 3, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
-; V21 tmp14 [V21 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP
-; V22 tmp15 [V22 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
-; V23 tmp16 [V23 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP
-; V24 tmp17 [V24 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._length (fldOffset=0x8)" P-DEP
-; V25 tmp18 [V25,T11] ( 2, 4 ) long -> rdi "argument with side effect"
-; V26 tmp19 [V26,T22] ( 2, 2 ) long -> rdi "argument with side effect"
-; V27 tmp20 [V27,T23] ( 2, 2 ) long -> rsi "argument with side effect"
-; V28 tmp21 [V28,T05] ( 2, 8 ) long -> rsi "argument with side effect"
-; V29 tmp22 [V29,T24] ( 2, 2 ) long -> rsi "argument with side effect"
-; V30 tmp23 [V30,T21] ( 2, 2 ) byref -> rbx single-def "argument with side effect"
-; V31 tmp24 [V31,T26] ( 2, 1 ) long -> rdi "argument with side effect"
-; V32 PSPSym [V32,T27] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
-; V33 cse0 [V33,T10] ( 2, 4.50) long -> r13 hoist "CSE - moderate"
-; V34 cse1 [V34,T14] ( 4, 3 ) long -> r14 "CSE - moderate"
-; V35 cse2 [V35,T08] ( 8, 6.75) long -> registers multi-def "CSE - moderate"
-; V36 cse3 [V36,T06] ( 11, 7.75) long -> r15 "CSE - aggressive"
-; TEMP_01 long -> [rbp-0x80]
+; V12 tmp5 [V12,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
+; V13 tmp6 [V13,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1"
+; V14 tmp7 [V14,T21] ( 2, 2 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg"
+; V15 tmp8 [V15 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V16 tmp9 [V16,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
+; V17 tmp10 [V17,T02] ( 3, 16 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V18 tmp11 [V18 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP
+; V19 tmp12 [V19 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V20 tmp13 [V20 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V15._items (fldOffset=0x0)" P-DEP
+; V21 tmp14 [V21 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V15._length (fldOffset=0x8)" P-DEP
+; V22 tmp15 [V22,T11] ( 2, 4 ) long -> rdi "argument with side effect"
+; V23 tmp16 [V23,T23] ( 2, 2 ) long -> rdi "argument with side effect"
+; V24 tmp17 [V24,T24] ( 2, 2 ) long -> rsi "argument with side effect"
+; V25 tmp18 [V25,T25] ( 2, 2 ) long -> rdi "argument with side effect"
+; V26 tmp19 [V26,T07] ( 2, 8 ) long -> rsi "argument with side effect"
+; V27 tmp20 [V27,T26] ( 2, 2 ) long -> rsi "argument with side effect"
+; V28 tmp21 [V28,T22] ( 2, 2 ) byref -> rbx single-def "argument with side effect"
+; V29 tmp22 [V29,T27] ( 2, 1 ) long -> rdi "argument with side effect"
+; V30 PSPSym [V30,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V31 cse0 [V31,T10] ( 2, 4.50) long -> r12 hoist "CSE - aggressive"
+; V32 cse1 [V32,T14] ( 4, 3 ) long -> r14 "CSE - moderate"
+; V33 cse2 [V33,T09] ( 8, 6.75) long -> registers multi-def "CSE - aggressive"
+; V34 cse3 [V34,T28] ( 2, 1 ) int -> rdi "CSE - conservative"
+; V35 cse4 [V35,T05] ( 11, 8 ) long -> r15 "CSE - aggressive"
+; V36 cse5 [V36,T06] ( 9, 8 ) byref -> [rbp-0x88] multi-def "CSE - aggressive"
;
; Lcl frame size = 104
@@ -72,7 +71,7 @@ G_M47297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M47297_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
test rbx, rbx
- je G_M47297_IG25
+ je G_M47297_IG22
mov r15, qword ptr [rdi]
mov rdi, r15
; gcrRegs -[rdi]
@@ -124,18 +123,21 @@ G_M47297_IG05: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000
; byrRegs +[rsi]
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
- add rdi, 16
+ lea rbx, bword ptr [rdi+0x10]
+ ; byrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs -[rdi]
; byrRegs +[rdi]
call [CORINFO_HELP_ASSIGN_BYREF]
; gcrRegs -[r14]
+ ; byrRegs -[rbx]
movsq
mov edi, dword ptr [r13+0x08]
; byrRegs -[rdi]
mov rbx, gword ptr [rbp-0x60]
; gcrRegs +[rbx]
mov dword ptr [rbx+0x08], edi
- ;; size=31 bbWeight=0.50 PerfScore 4.88
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M47297_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -161,7 +163,7 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
mov r13, rax
; gcrRegs +[r13]
test r13, r13
- je G_M47297_IG14
+ je G_M47297_IG11
mov rdi, r15
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax]
@@ -189,10 +191,13 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; gcrRegs +[rbx]
lea rdi, bword ptr [rbx+0x10]
; byrRegs +[rdi]
+ mov r14, rdi
+ ; byrRegs +[r14]
+ mov rdi, r14
call [CORINFO_HELP_ASSIGN_BYREF]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r14]
movsq
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=96 bbWeight=0.50 PerfScore 14.00
G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -203,7 +208,7 @@ G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13]
; byrRegs -[rsi rdi]
mov rdi, r15
@@ -226,52 +231,42 @@ G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs -[rdi]
mov edi, dword ptr [rbp-0x38]
mov dword ptr [r14+0x18], edi
- mov rax, gword ptr [r14+0x10]
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x70], rax
- ; GC ptr vars +{V12}
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M47297_IG15
- ;; size=73 bbWeight=0.50 PerfScore 9.75
-G_M47297_IG10: ; bbWeight=0.25, gcVars=0000000000040001 {V00 V12}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov gword ptr [rbp-0x78], rcx
+ lea rdi, bword ptr [r14+0x10]
+ ; byrRegs +[rdi]
+ mov rax, rdi
+ ; byrRegs +[rax]
+ mov bword ptr [rbp-0x88], rax
+ ; GC ptr vars +{V36}
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V14}
- mov rdx, qword ptr [rcx]
- mov qword ptr [rbp-0x80], rdx
mov rdi, r15
+ ; byrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov rdx, qword ptr [rbp-0x80]
- cmp rdx, rax
- je SHORT G_M47297_IG12
- ;; size=29 bbWeight=0.25 PerfScore 2.38
-G_M47297_IG11: ; bbWeight=0.12, gcVars=0000000000040001 {V00 V12}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V14}
mov rdi, rax
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, bword ptr [rbp-0x78]
+ ; byrRegs +[rsi]
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- ; GC ptr vars -{V12}
+ ; byrRegs -[rsi]
+ ; GC ptr vars -{V14}
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax
- ; GC ptr vars +{V14}
- ;; size=17 bbWeight=0.12 PerfScore 0.66
-G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rbp-0x78]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 1
- jne SHORT G_M47297_IG15
+ mov gword ptr [rbp-0x70], rax
+ ; GC ptr vars +{V06}
+ test rax, rax
+ je SHORT G_M47297_IG12
+ mov edi, dword ptr [rax+0x08]
+ cmp edi, 1
+ jne SHORT G_M47297_IG12
mov rdi, r15
+ ; GC ptr vars -{V06 V36}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax rbx]
; gcr arg pop 0
- mov r15, gword ptr [rbp-0x78]
+ mov r15, gword ptr [rbp-0x70]
; gcrRegs +[r15]
mov rsi, gword ptr [r15+0x10]
; gcrRegs +[rsi]
@@ -279,13 +274,12 @@ G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefR
; gcrRegs +[rdi]
mov r11, rax
xor edx, edx
- ; GC ptr vars -{V14}
call [rax]
; gcrRegs -[rsi rdi r13 r15]
; gcr arg pop 0
mov dword ptr [r14+0x08], r12d
- ;; size=41 bbWeight=0.50 PerfScore 8.00
-G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=144 bbWeight=0.50 PerfScore 21.88
+G_M47297_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
pop r12
@@ -295,7 +289,7 @@ G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG11: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14] +[rbx]
mov rdi, r14
call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE]
@@ -308,14 +302,19 @@ G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs +[rsi]
mov r14, gword ptr [rbp-0x60]
; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
+ lea rax, bword ptr [r14+0x10]
+ mov r13, rax
+ ; byrRegs +[r13]
...
+30 (+3.81%) : 192618.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (FullOpts)
@@ -9,44 +9,43 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 27 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T07] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 this [V00,T00] ( 16, 23 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T08] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T13] ( 4, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V03 loc1 [V03,T19] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T18] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 7, 9 ) ref -> [rbp-0x68] class-hnd EH-live single-def <<unknown class>>
; V05 loc3 [V05,T20] ( 4, 2 ) int -> r12 single-def
-;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T15] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
; V09 tmp2 [V09,T01] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup"
; V10 tmp3 [V10,T16] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
; V11 tmp4 [V11 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V12 tmp5 [V12,T18] ( 3, 2.25) ref -> [rbp-0x70] spill-single-def "CASTCLASS eval op1"
-; V13 tmp6 [V13,T25] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V14 tmp7 [V14,T09] ( 6, 4.75) ref -> [rbp-0x78] class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp8 [V15,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
-; V16 tmp9 [V16,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1"
-;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V18 tmp11 [V18 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V19 tmp12 [V19,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
-; V20 tmp13 [V20,T02] ( 3, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
-; V21 tmp14 [V21 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP
-; V22 tmp15 [V22 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
-; V23 tmp16 [V23 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP
-; V24 tmp17 [V24 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._length (fldOffset=0x8)" P-DEP
-; V25 tmp18 [V25,T11] ( 2, 4 ) long -> rdi "argument with side effect"
-; V26 tmp19 [V26,T22] ( 2, 2 ) long -> rdi "argument with side effect"
-; V27 tmp20 [V27,T23] ( 2, 2 ) long -> rsi "argument with side effect"
-; V28 tmp21 [V28,T05] ( 2, 8 ) long -> rsi "argument with side effect"
-; V29 tmp22 [V29,T24] ( 2, 2 ) long -> rsi "argument with side effect"
-; V30 tmp23 [V30,T21] ( 2, 2 ) byref -> rbx single-def "argument with side effect"
-; V31 tmp24 [V31,T26] ( 2, 1 ) long -> rdi "argument with side effect"
-; V32 PSPSym [V32,T27] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
-; V33 cse0 [V33,T10] ( 2, 4.50) long -> r13 hoist "CSE - moderate"
-; V34 cse1 [V34,T14] ( 4, 3 ) long -> r14 "CSE - moderate"
-; V35 cse2 [V35,T08] ( 8, 6.75) long -> registers multi-def "CSE - moderate"
-; V36 cse3 [V36,T06] ( 11, 7.75) long -> r15 "CSE - aggressive"
-; TEMP_01 long -> [rbp-0x80]
+; V12 tmp5 [V12,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup"
+; V13 tmp6 [V13,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1"
+; V14 tmp7 [V14,T21] ( 2, 2 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg"
+; V15 tmp8 [V15 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V16 tmp9 [V16,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
+; V17 tmp10 [V17,T02] ( 3, 16 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V18 tmp11 [V18 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP
+; V19 tmp12 [V19 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V20 tmp13 [V20 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V15._items (fldOffset=0x0)" P-DEP
+; V21 tmp14 [V21 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V15._length (fldOffset=0x8)" P-DEP
+; V22 tmp15 [V22,T11] ( 2, 4 ) long -> rdi "argument with side effect"
+; V23 tmp16 [V23,T23] ( 2, 2 ) long -> rdi "argument with side effect"
+; V24 tmp17 [V24,T24] ( 2, 2 ) long -> rsi "argument with side effect"
+; V25 tmp18 [V25,T25] ( 2, 2 ) long -> rdi "argument with side effect"
+; V26 tmp19 [V26,T07] ( 2, 8 ) long -> rsi "argument with side effect"
+; V27 tmp20 [V27,T26] ( 2, 2 ) long -> rsi "argument with side effect"
+; V28 tmp21 [V28,T22] ( 2, 2 ) byref -> rbx single-def "argument with side effect"
+; V29 tmp22 [V29,T27] ( 2, 1 ) long -> rdi "argument with side effect"
+; V30 PSPSym [V30,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V31 cse0 [V31,T10] ( 2, 4.50) long -> r12 hoist "CSE - aggressive"
+; V32 cse1 [V32,T14] ( 4, 3 ) long -> r14 "CSE - moderate"
+; V33 cse2 [V33,T09] ( 8, 6.75) long -> registers multi-def "CSE - aggressive"
+; V34 cse3 [V34,T28] ( 2, 1 ) int -> rdi "CSE - conservative"
+; V35 cse4 [V35,T05] ( 11, 8 ) long -> r15 "CSE - aggressive"
+; V36 cse5 [V36,T06] ( 9, 8 ) byref -> [rbp-0x88] multi-def "CSE - aggressive"
;
; Lcl frame size = 104
@@ -72,7 +71,7 @@ G_M47297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M47297_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
test rbx, rbx
- je G_M47297_IG25
+ je G_M47297_IG22
mov r15, qword ptr [rdi]
mov rdi, r15
; gcrRegs -[rdi]
@@ -124,18 +123,21 @@ G_M47297_IG05: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000
; byrRegs +[rsi]
mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
- add rdi, 16
+ lea rbx, bword ptr [rdi+0x10]
+ ; byrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs -[rdi]
; byrRegs +[rdi]
call [CORINFO_HELP_ASSIGN_BYREF]
; gcrRegs -[r14]
+ ; byrRegs -[rbx]
movsq
mov edi, dword ptr [r13+0x08]
; byrRegs -[rdi]
mov rbx, gword ptr [rbp-0x60]
; gcrRegs +[rbx]
mov dword ptr [rbx+0x08], edi
- ;; size=31 bbWeight=0.50 PerfScore 4.88
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M47297_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -161,7 +163,7 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
mov r13, rax
; gcrRegs +[r13]
test r13, r13
- je G_M47297_IG14
+ je G_M47297_IG11
mov rdi, r15
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax]
@@ -189,10 +191,13 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; gcrRegs +[rbx]
lea rdi, bword ptr [rbx+0x10]
; byrRegs +[rdi]
+ mov r14, rdi
+ ; byrRegs +[r14]
+ mov rdi, r14
call [CORINFO_HELP_ASSIGN_BYREF]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r14]
movsq
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=96 bbWeight=0.50 PerfScore 14.00
G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -203,7 +208,7 @@ G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13]
; byrRegs -[rsi rdi]
mov rdi, r15
@@ -226,52 +231,42 @@ G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs -[rdi]
mov edi, dword ptr [rbp-0x38]
mov dword ptr [r14+0x18], edi
- mov rax, gword ptr [r14+0x10]
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x70], rax
- ; GC ptr vars +{V12}
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M47297_IG15
- ;; size=73 bbWeight=0.50 PerfScore 9.75
-G_M47297_IG10: ; bbWeight=0.25, gcVars=0000000000040001 {V00 V12}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov gword ptr [rbp-0x78], rcx
+ lea rdi, bword ptr [r14+0x10]
+ ; byrRegs +[rdi]
+ mov rax, rdi
+ ; byrRegs +[rax]
+ mov bword ptr [rbp-0x88], rax
+ ; GC ptr vars +{V36}
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V14}
- mov rdx, qword ptr [rcx]
- mov qword ptr [rbp-0x80], rdx
mov rdi, r15
+ ; byrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov rdx, qword ptr [rbp-0x80]
- cmp rdx, rax
- je SHORT G_M47297_IG12
- ;; size=29 bbWeight=0.25 PerfScore 2.38
-G_M47297_IG11: ; bbWeight=0.12, gcVars=0000000000040001 {V00 V12}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V14}
mov rdi, rax
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, bword ptr [rbp-0x78]
+ ; byrRegs +[rsi]
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- ; GC ptr vars -{V12}
+ ; byrRegs -[rsi]
+ ; GC ptr vars -{V14}
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax
- ; GC ptr vars +{V14}
- ;; size=17 bbWeight=0.12 PerfScore 0.66
-G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rbp-0x78]
- ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 1
- jne SHORT G_M47297_IG15
+ mov gword ptr [rbp-0x70], rax
+ ; GC ptr vars +{V06}
+ test rax, rax
+ je SHORT G_M47297_IG12
+ mov edi, dword ptr [rax+0x08]
+ cmp edi, 1
+ jne SHORT G_M47297_IG12
mov rdi, r15
+ ; GC ptr vars -{V06 V36}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax rbx]
; gcr arg pop 0
- mov r15, gword ptr [rbp-0x78]
+ mov r15, gword ptr [rbp-0x70]
; gcrRegs +[r15]
mov rsi, gword ptr [r15+0x10]
; gcrRegs +[rsi]
@@ -279,13 +274,12 @@ G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefR
; gcrRegs +[rdi]
mov r11, rax
xor edx, edx
- ; GC ptr vars -{V14}
call [rax]
; gcrRegs -[rsi rdi r13 r15]
; gcr arg pop 0
mov dword ptr [r14+0x08], r12d
- ;; size=41 bbWeight=0.50 PerfScore 8.00
-G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=144 bbWeight=0.50 PerfScore 21.88
+G_M47297_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104
pop rbx
pop r12
@@ -295,7 +289,7 @@ G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG11: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14] +[rbx]
mov rdi, r14
call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE]
@@ -308,14 +302,19 @@ G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs +[rsi]
mov r14, gword ptr [rbp-0x60]
; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
+ lea rax, bword ptr [r14+0x10]
+ mov r13, rax
+ ; byrRegs +[r13]
...
libraries.pmi.linux.x64.checked.mch
-23 (-50.00%) : 36245.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -2,54 +2,37 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -57,10 +40,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-50.00%) : 15259.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -2,53 +2,36 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M7606_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -56,10 +39,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-25 (-42.37%) : 34794.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
@@ -2,46 +2,29 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Data.Common.SqlUdtStorage>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Data.Common.SqlUdtStorage>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.BitArray>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M5622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M5622_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M5622_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M5622_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M5622_IG03: ; bbWeight=0.25, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M5622_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M5622_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M5622_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
lea rdi, bword ptr [rbx+0x40]
; byrRegs +[rdi]
mov rsi, rax
@@ -50,15 +33,13 @@ G_M5622_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {},
; gcrRegs -[rax rbx rsi]
; byrRegs -[rdi]
nop
- ;; size=13 bbWeight=1 PerfScore 2.00
-G_M5622_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ;; size=28 bbWeight=1 PerfScore 3.25
+G_M5622_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 59, prolog size 8, PerfScore 10.69, instruction count 20, allocated bytes for code 59 (MethodHash=f8c9ea09) for method System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
+; Total bytes of code 34, prolog size 1, PerfScore 6.00, instruction count 10, allocated bytes for code 34 (MethodHash=f8c9ea09) for method System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,11 +47,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+4 (+3.42%) : 60720.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
@@ -7,16 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.25) ref -> rbx this class-hnd single-def <Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]>
+; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 4 ) ref -> r15 class-hnd single-def "bubbling QMark2" <<unknown class>>
-; V04 tmp2 [V04,T07] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
-;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp5 [V07,T02] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
-; V08 rat0 [V08,T05] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V09 rat1 [V09,T03] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V04 tmp2 [V04,T01] ( 4, 6 ) long -> r13 "VirtualCall with runtime lookup"
+; V05 tmp3 [V05,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V06 tmp4 [V06,T06] ( 2, 4 ) ref -> r12 single-def "argument with side effect"
+; V07 cse0 [V07,T07] ( 3, 3 ) long -> r14 "CSE - aggressive"
+; V08 rat0 [V08,T04] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V09 rat1 [V09,T02] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -24,73 +24,67 @@ G_M61432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push r15
push r14
+ push r13
+ push r12
push rbx
push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x30], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 6.75
-G_M61432_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
- mov r15, gword ptr [rbx+0x08]
+ mov r15, rsi
; gcrRegs +[r15]
- mov r14, rsi
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M61432_IG05
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M61432_IG03: ; bbWeight=0.25, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [r14], rdi
- je SHORT G_M61432_IG05
- ;; size=18 bbWeight=0.25 PerfScore 3.00
-G_M61432_IG04: ; bbWeight=0.12, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- ;; size=8 bbWeight=0.12 PerfScore 0.16
-G_M61432_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rdi, qword ptr [rbx]
+ ;; size=26 bbWeight=1 PerfScore 9.00
+G_M61432_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov r14, qword ptr [rbx]
+ mov rdi, r14
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
- mov r11, qword ptr [rsi+0x18]
- test r11, r11
- je SHORT G_M61432_IG07
- ;; size=19 bbWeight=1 PerfScore 9.25
-G_M61432_IG06: ; bbWeight=0.80, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M61432_IG08
+ mov r13, qword ptr [rsi+0x18]
+ test r13, r13
+ je SHORT G_M61432_IG04
+ ;; size=22 bbWeight=1 PerfScore 9.50
+G_M61432_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M61432_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M61432_IG07: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M61432_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r11, rax
+ mov r13, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M61432_IG08: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov rdi, r15
- ; gcrRegs +[rdi]
- mov rsi, r14
+G_M61432_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov r12, gword ptr [rbx+0x08]
+ ; gcrRegs +[r12]
+ mov rdi, qword ptr [r14+0x38]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi]
+ mov rsi, r15
; gcrRegs +[rsi]
+ call CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[rsi r15] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rdi, r12
+ ; gcrRegs +[rdi]
+ mov r11, r13
cmp dword ptr [rdi], edi
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M61432_IG09: ; bbWeight=1, epilog, nogc, extend
+ mov rax, r13
+ ; gcrRegs -[rax]
+ ;; size=36 bbWeight=1 PerfScore 13.25
+G_M61432_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
+ pop r12
+ pop r13
pop r14
pop r15
pop rbp
- tail.jmp [r11]
- ;; size=13 bbWeight=1 PerfScore 4.25
+ tail.jmp [rax]
+ ;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 117, prolog size 19, PerfScore 32.31, instruction count 39, allocated bytes for code 117 (MethodHash=eacb1007) for method Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
+; Total bytes of code 121, prolog size 26, PerfScore 38.90, instruction count 41, allocated bytes for code 121 (MethodHash=eacb1007) for method Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -98,13 +92,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+4 (+3.64%) : 244026.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary2[System.__Canon,System.Nullable1[int]]:Contains(System.Object):ubyte:this (FullOpts)
@@ -7,84 +7,78 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.25) ref -> rbx this class-hnd single-def <Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T04] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r15 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp4 [V06,T02] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
-; V07 rat0 [V07,T05] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V08 rat1 [V08,T03] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V04 tmp2 [V04,T01] ( 4, 6 ) long -> r13 "VirtualCall with runtime lookup"
+; V05 tmp3 [V05,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V06 cse0 [V06,T06] ( 3, 3 ) long -> r14 "CSE - aggressive"
+; V07 rat0 [V07,T04] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V08 rat1 [V08,T02] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
G_M43207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
+ push r13
push rbx
sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x28], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M43207_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
mov r15, rsi
; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M43207_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M43207_IG03: ; bbWeight=0.25, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
- mov rdi, qword ptr [rdi+0x38]
- mov rdi, qword ptr [rdi]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [r15], rdi
- je SHORT G_M43207_IG05
- ;; size=18 bbWeight=0.25 PerfScore 3.00
-G_M43207_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- ;; size=8 bbWeight=0.12 PerfScore 0.16
-G_M43207_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rdi, qword ptr [rbx]
+ ;; size=27 bbWeight=1 PerfScore 7.25
+G_M43207_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov r14, qword ptr [rbx]
+ mov rdi, r14
mov rsi, qword ptr [rdi+0x38]
mov rsi, qword ptr [rsi]
- mov r11, qword ptr [rsi+0x60]
- test r11, r11
- je SHORT G_M43207_IG07
- ;; size=19 bbWeight=1 PerfScore 9.25
-G_M43207_IG06: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43207_IG08
+ mov r13, qword ptr [rsi+0x60]
+ test r13, r13
+ je SHORT G_M43207_IG04
+ ;; size=22 bbWeight=1 PerfScore 9.50
+G_M43207_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M43207_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M43207_IG07: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M43207_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r11, rax
+ mov r13, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M43207_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rdi, rbx
- ; gcrRegs +[rdi]
+G_M43207_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, qword ptr [r14+0x38]
+ mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rdi]
mov rsi, r15
; gcrRegs +[rsi]
- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M43207_IG09: ; bbWeight=1, epilog, nogc, extend
+ call CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[rsi r15] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov r11, r13
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rax, r13
+ ; gcrRegs -[rax]
+ ;; size=30 bbWeight=1 PerfScore 8.25
+G_M43207_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
+ pop r13
+ pop r14
pop r15
pop rbp
- tail.jmp [r11]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ tail.jmp [rax]
+ ;; size=15 bbWeight=1 PerfScore 4.75
-; Total bytes of code 110, prolog size 20, PerfScore 25.06, instruction count 35, allocated bytes for code 110 (MethodHash=32ef5738) for method Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 114, prolog size 27, PerfScore 31.65, instruction count 37, allocated bytes for code 114 (MethodHash=32ef5738) for method Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -92,12 +86,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+5 (+5.43%) : 213565.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> rsi class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rsi class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.77) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.23) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1 ) ubyte -> rax "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.07) byref -> rdi single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.77) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.23) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.07) byref -> rdi single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -49,12 +48,14 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=2 bbWeight=0.50 PerfScore 0.75
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
+ test rsi, rsi
+ je SHORT G_M57556_IG04
mov rdx, gword ptr [rdi+0x08]
; gcrRegs +[rdx]
mov rsi, gword ptr [rsi+0x08]
cmp rdx, rsi
je SHORT G_M57556_IG14
- ;; size=13 bbWeight=0.50 PerfScore 2.62
+ ;; size=18 bbWeight=0.50 PerfScore 3.25
G_M57556_IG07: ; bbWeight=0.43, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
test rdx, rdx
@@ -99,7 +100,7 @@ G_M57556_IG14: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=000
jmp SHORT G_M57556_IG12
;; size=7 bbWeight=0.07 PerfScore 0.17
-; Total bytes of code 92, prolog size 4, PerfScore 14.74, instruction count 33, allocated bytes for code 92 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 97, prolog size 4, PerfScore 15.37, instruction count 35, allocated bytes for code 97 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.linux.x64.Release.mch
-23 (-50.00%) : 662833.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,54 +3,37 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; rbp based frame
+; rsp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1373
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.50 PerfScore 4.00
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 10.50, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -58,10 +41,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-50.00%) : 641668.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -3,54 +3,37 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; rbp based frame
+; rsp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 624
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.50 PerfScore 4.00
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 10.50, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -58,10 +41,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-28 (-45.90%) : 60930.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)
@@ -2,64 +2,41 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> rsi single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> rax this single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rsi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- ; byrRegs +[rdi]
- mov rax, gword ptr [rdi]
- ; gcrRegs +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M64707_IG05
- ;; size=11 bbWeight=1 PerfScore 3.50
-G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdi]
+ push rax
+ mov qword ptr [rsp], rsi
+ mov rax, rdi
+ ; byrRegs +[rax]
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
mov rdi, qword ptr [rsi+0x38]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi+0x08]
- cmp qword ptr [rcx], rdi
- je SHORT G_M64707_IG05
- ;; size=16 bbWeight=0.25 PerfScore 2.50
-G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- mov rsi, rax
+ mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M64707_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M64707_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ; gcrRegs -[rsi] +[rax]
+ ; byrRegs -[rax]
+ ; gcr arg pop 0
+ nop
+ ;; size=20 bbWeight=1 PerfScore 9.25
+G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 61, prolog size 14, PerfScore 10.94, instruction count 20, allocated bytes for code 61 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 33, prolog size 5, PerfScore 12.75, instruction count 11, allocated bytes for code 33 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -67,10 +44,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+38 (+6.82%) : 114792.dasm - System.Collections.Immutable.ImmutableDictionary2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary2[System.__Canon,int]:this (Tier1)
@@ -5,160 +5,210 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 272
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 272
; 3 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 7.12) ref -> rbx this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-; V01 arg1 [V01,T02] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
+; V00 this [V00,T00] ( 17, 7.38) ref -> rbx this class-hnd single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+; V01 arg1 [V01,T02] ( 6, 4 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> rdx single-def
-; V03 loc0 [V03 ] ( 2, 0.50) struct (16) [rbp-0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,int]>
-; V04 loc1 [V04,T07] ( 8, 3 ) ref -> r15 ld-addr-op class-hnd <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+; V03 loc0 [V03 ] ( 2, 0.50) struct (16) [rbp-0x40] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,int]>
+; V04 loc1 [V04,T07] ( 9, 3.75) ref -> r14 ld-addr-op class-hnd <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,int]>
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-; V11 tmp6 [V11,T08] ( 2, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V11 tmp6 [V11,T08] ( 2, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
;* V12 tmp7 [V12,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp10 [V15,T30] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
-; V17 tmp12 [V17,T09] ( 2, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
-; V18 tmp13 [V18,T13] ( 4, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-; V19 tmp14 [V19,T05] ( 5, 4.88) ref -> r14 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-; V20 tmp15 [V20,T01] ( 7, 7.50) ref -> r13 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-;* V21 tmp16 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V22 tmp17 [V22,T29] ( 2, 0.38) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
-; V23 tmp18 [V23,T16] ( 3, 1.12) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-; V25 tmp20 [V25,T38] ( 2, 0 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
-; V26 tmp21 [V26,T31] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V14 tmp9 [V14,T30] ( 3, 0 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
+;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
+; V16 tmp11 [V16,T09] ( 2, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
+; V17 tmp12 [V17,T13] ( 4, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+; V18 tmp13 [V18,T05] ( 5, 4.88) ref -> r13 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V19 tmp14 [V19,T01] ( 7, 7.50) ref -> r12 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
+;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V21 tmp16 [V21,T29] ( 2, 0.38) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
+; V22 tmp17 [V22,T16] ( 3, 1.12) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+; V24 tmp19 [V24,T38] ( 2, 0 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
+; V25 tmp20 [V25,T31] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
-;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,int]>
-;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,int]>
-;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V32 tmp27 [V32 ] ( 2, 0.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._root (fldOffset=0x0)" P-DEP
-; V33 tmp28 [V33 ] ( 2, 0.50) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._countAdjustment (fldOffset=0x8)" P-DEP
-;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref "field V07._root (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35 ] ( 0, 0 ) ref -> zero-ref "field V07._comparers (fldOffset=0x8)" P-INDEP
-;* V36 tmp31 [V36 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-DEP
-;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._countAdjustment (fldOffset=0x8)" P-DEP
-; V38 tmp33 [V38,T26] ( 2, 0.50) ref -> rdx single-def "field V30._root (fldOffset=0x0)" P-INDEP
-; V39 tmp34 [V39,T27] ( 2, 0.50) ref -> rcx single-def "field V30._comparers (fldOffset=0x8)" P-INDEP
-; V40 tmp35 [V40,T39] ( 2, 0 ) long -> rdi "argument with side effect"
-; V41 tmp36 [V41,T21] ( 2, 1 ) long -> rsi "argument with side effect"
-; V42 tmp37 [V42,T25] ( 2, 0.75) long -> rdi "argument with side effect"
-; V43 cse0 [V43,T10] ( 3, 2.25) ref -> rdi "CSE - moderate"
-; V44 cse1 [V44,T11] ( 4, 2.06) ref -> rdi "CSE - moderate"
-;* V45 rat0 [V45,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V46 rat1 [V46,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V47 rat2 [V47,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V48 rat3 [V48,T32] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V49 rat4 [V49,T33] ( 3, 0 ) long -> rdi "runtime lookup"
-; V50 rat5 [V50,T34] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V51 rat6 [V51,T35] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
-; V52 rat7 [V52,T36] ( 3, 0 ) long -> rsi "runtime lookup"
-; V53 rat8 [V53,T37] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
-; V54 rat9 [V54,T22] ( 3, 0.82) long -> rdi "Spilling to split statement for tree"
-; V55 rat10 [V55,T23] ( 3, 0.75) long -> rdi "runtime lookup"
-; V56 rat11 [V56,T19] ( 3, 1.05) long -> rax "fgMakeTemp is creating a new local variable"
-;* V57 rat12 [V57,T17] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V58 rat13 [V58,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V59 rat14 [V59,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V60 rat15 [V60,T18] ( 3, 1.10) long -> rdi "Spilling to split statement for tree"
-; V61 rat16 [V61,T20] ( 3, 1 ) long -> rsi "runtime lookup"
-; V62 rat17 [V62,T15] ( 3, 1.40) long -> rsi "fgMakeTemp is creating a new local variable"
+;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,int]>
+;* V30 tmp25 [V30 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V31 tmp26 [V31 ] ( 2, 0.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._root (fldOffset=0x0)" P-DEP
+; V32 tmp27 [V32 ] ( 2, 0.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V03._countAdjustment (fldOffset=0x8)" P-DEP
+;* V33 tmp28 [V33 ] ( 0, 0 ) ref -> zero-ref "field V07._root (fldOffset=0x0)" P-INDEP
+;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref "field V07._comparers (fldOffset=0x8)" P-INDEP
+;* V35 tmp30 [V35 ] ( 0, 0 ) ref -> zero-ref "field V08._root (fldOffset=0x0)" P-DEP
+;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V08._countAdjustment (fldOffset=0x8)" P-DEP
+; V37 tmp32 [V37,T26] ( 2, 0.50) ref -> rdx single-def "field V29._root (fldOffset=0x0)" P-INDEP
+; V38 tmp33 [V38,T27] ( 2, 0.50) ref -> rcx single-def "field V29._comparers (fldOffset=0x8)" P-INDEP
+; V39 tmp34 [V39,T39] ( 2, 0 ) long -> rdi "argument with side effect"
+; V40 tmp35 [V40,T21] ( 2, 1 ) long -> rsi "argument with side effect"
+; V41 tmp36 [V41,T25] ( 2, 0.75) long -> rdi "argument with side effect"
+; V42 cse0 [V42,T10] ( 3, 2.25) ref -> rdi "CSE - moderate"
+; V43 cse1 [V43,T11] ( 4, 2.06) ref -> rdi "CSE - moderate"
+;* V44 rat0 [V44,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V45 rat1 [V45,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V46 rat2 [V46,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V47 rat3 [V47,T32] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V48 rat4 [V48,T33] ( 3, 0 ) long -> rdi "runtime lookup"
+; V49 rat5 [V49,T34] ( 3, 0 ) long -> rax "fgMakeTemp is creating a new local variable"
+; V50 rat6 [V50,T35] ( 3, 0 ) long -> rdi "Spilling to split statement for tree"
+; V51 rat7 [V51,T36] ( 3, 0 ) long -> rsi "runtime lookup"
+; V52 rat8 [V52,T37] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
+; V53 rat9 [V53,T22] ( 3, 0.82) long -> rdi "Spilling to split statement for tree"
+; V54 rat10 [V54,T23] ( 3, 0.75) long -> rdi "runtime lookup"
+; V55 rat11 [V55,T19] ( 3, 1.05) long -> rax "fgMakeTemp is creating a new local variable"
+; V56 rat12 [V56,T17] ( 2, 1 ) long -> rdx "Spilling to split statement for tree"
+;* V57 rat13 [V57,T28] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V58 rat14 [V58,T14] ( 2, 1 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V59 rat15 [V59,T18] ( 3, 1.10) long -> rdi "Spilling to split statement for tree"
+; V60 rat16 [V60,T20] ( 3, 1 ) long -> rsi "runtime lookup"
+; V61 rat17 [V61,T15] ( 3, 1.40) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M54337_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 32
+ sub rsp, 24
lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- mov qword ptr [rbp-0x28], rdi
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0x30], rdi
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=33 bbWeight=1 PerfScore 8.50
+ ;; size=35 bbWeight=1 PerfScore 9.50
G_M54337_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx], ebx
test r15, r15
- je SHORT G_M54337_IG05
+ je G_M54337_IG19
movzx rdi, dl
or edi, dword ptr [rbx+0x18]
- jne SHORT G_M54337_IG10
- ;; size=16 bbWeight=1 PerfScore 8.50
-G_M54337_IG03: ; bbWeight=0.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [r15]
- cmp rdi, qword ptr [rbx]
- je SHORT G_M54337_IG06
- ;; size=8 bbWeight=0.75 PerfScore 4.50
-G_M54337_IG04: ; bbWeight=0.38, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- jmp G_M54337_IG18
- ;; size=5 bbWeight=0.38 PerfScore 0.75
-G_M54337_IG05: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov edi, 0x6A3
- mov rsi, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- call [System.Collections.Immutable.Requires:FailArgumentNullException(System.String)]
- ; gcrRegs -[rax rdi]
- int3
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M54337_IG06: ; bbWeight=0.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r15]
+ jne SHORT G_M54337_IG08
+ ;; size=20 bbWeight=1 PerfScore 8.50
+G_M54337_IG03: ; bbWeight=0.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, qword ptr [rbx]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ mov r14, rax
+ ; gcrRegs +[r14]
+ test r14, r14
+ je G_M54337_IG20
+ ;; size=23 bbWeight=0.75 PerfScore 3.56
+G_M54337_IG04: ; bbWeight=0.75, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r15]
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov r14, gword ptr [rdi+0x08]
- ; gcrRegs +[r14]
- mov r13, gword ptr [rdi+0x10]
+ mov r13, gword ptr [rdi+0x08]
; gcrRegs +[r13]
- cmp byte ptr [r15], r15b
- test r14, r14
- je G_M54337_IG21
+ mov r12, gword ptr [rdi+0x10]
+ ; gcrRegs +[r12]
+ cmp byte ptr [r14], r14b
+ test r13, r13
+ je G_M54337_IG23
;; size=24 bbWeight=0.75 PerfScore 7.69
-G_M54337_IG07: ; bbWeight=0.75, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M54337_IG05: ; bbWeight=0.75, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; const ptr
- test r13, r13
- cmove r13, gword ptr [rdi]
- mov rdi, gword ptr [r15+0x10]
+ test r12, r12
+ cmove r12, gword ptr [rdi]
+ mov rdi, gword ptr [r14+0x10]
; gcrRegs +[rdi]
- cmp gword ptr [rdi+0x08], r14
- jne SHORT G_M54337_IG13
+ cmp gword ptr [rdi+0x08], r13
+ jne SHORT G_M54337_IG10
;; size=27 bbWeight=0.75 PerfScore 7.12
-G_M54337_IG08: ; bbWeight=0.56, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- cmp gword ptr [rdi+0x10], r13
- jne G_M54337_IG24
- mov rax, r15
+G_M54337_IG06: ; bbWeight=0.56, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
+ cmp gword ptr [rdi+0x10], r12
+ jne G_M54337_IG26
+ mov rax, r14
; gcrRegs +[rax]
;; size=13 bbWeight=0.56 PerfScore 2.39
-G_M54337_IG09: ; bbWeight=0.75, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdi r13 r15]
- add rsp, 32
+G_M54337_IG07: ; bbWeight=0.75, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rdi r12 r14]
+ add rsp, 24
pop rbx
+ pop r12
pop r13
pop r14
...
+13 (+10.83%) : 490865.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
@@ -11,13 +11,11 @@
;
; V00 this [V00,T02] ( 4, 3 ) ref -> rdi this class-hnd <OLEDB.Test.ModuleCore.CTestCase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 4.50) ref -> rsi single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T06] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <OLEDB.Test.ModuleCore.CTestModule>
-; V05 tmp4 [V05,T07] ( 2, 0 ) ref -> rdi single-def "arg temp"
-; V06 cse0 [V06,T05] ( 4, 3 ) ref -> rbx "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 3, 4 ) ref -> rsi "Spilling to split statement for tree"
-; V08 rat1 [V08,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V02 tmp1 [V02,T05] ( 2, 0 ) ref -> rdi single-def "arg temp"
+; V03 cse0 [V03,T04] ( 5, 3 ) ref -> rbx "CSE - aggressive"
+; V04 rat0 [V04,T03] ( 3, 4 ) ref -> rsi "Spilling to split statement for tree"
+; V05 rat1 [V05,T00] ( 5, 7 ) ref -> rcx class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V06 rat2 [V06,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
;
; Lcl frame size = 8
@@ -33,45 +31,50 @@ G_M5100_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byre
; gcrRegs +[rbx]
mov rsi, rbx
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ test rcx, rcx
je SHORT G_M5100_IG05
;; size=15 bbWeight=1 PerfScore 3.75
-G_M5100_IG03: ; bbWeight=0.50, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M5100_IG03: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E ; System.Xml.WrappedReaderTests.WrappedReaderTest
- cmp qword ptr [rax], rdi
+ mov rax, 0xD1FFAB1E ; System.Xml.WrappedReaderTests.WrappedReaderTest
+ cmp qword ptr [rcx], rax
je SHORT G_M5100_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M5100_IG04: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M5100_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M5100_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ test rcx, rcx
je SHORT G_M5100_IG10
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rax, rsi
+ mov rax, rbx
+ ; gcrRegs +[rax]
test rax, rax
je SHORT G_M5100_IG08
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- mov rdi, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
- cmp qword ptr [rax], rdi
+ ;; size=13 bbWeight=1 PerfScore 2.75
+G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ mov rsi, 0xD1FFAB1E ; System.Xml.WrappedReaderTests.WrappedReaderTest
+ cmp qword ptr [rax], rsi
je SHORT G_M5100_IG08
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M5100_IG07: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M5100_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rsi] +[rax]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[rbx rsi] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
+ ;; size=18 bbWeight=0 PerfScore 0.00
G_M5100_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
@@ -94,7 +97,7 @@ G_M5100_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
jmp SHORT G_M5100_IG02
;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 17.25, instruction count 34, allocated bytes for code 120 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 133, prolog size 8, PerfScore 16.75, instruction count 36, allocated bytes for code 133 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
Unwind Info:
+33 (+15.64%) : 289664.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -11,98 +11,112 @@
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> rbx class-hnd single-def <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T08] ( 3, 2 ) ref -> rax "guarded devirt return temp"
+; V02 tmp1 [V02,T07] ( 3, 2 ) ref -> rax "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,T07] ( 4, 2 ) ubyte -> rcx "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T09] ( 3, 2 ) int -> r13
-; V09 tmp8 [V09,T10] ( 2, 2 ) ubyte -> rcx "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> r13 single-def "Inlining Arg"
-;* V13 tmp12 [V13,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T05] ( 3, 3 ) long -> r13 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T01] ( 3, 3 ) long -> r15 "CSE - aggressive"
-; V18 cse1 [V18,T02] ( 3, 3 ) long -> r14 "CSE - moderate"
-; V19 cse2 [V19,T06] ( 3, 3 ) int -> rdi "CSE - moderate"
+; V04 tmp3 [V04,T06] ( 4, 2 ) ubyte -> rcx "Inline return value spill temp"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T08] ( 3, 2 ) int -> r14
+; V08 tmp7 [V08,T09] ( 2, 2 ) ubyte -> rcx "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
+;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) long -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) long -> r14 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 cse0 [V15,T05] ( 3, 3 ) int -> rdi "CSE - aggressive"
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> r15 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
- push r13
push rbx
+ push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r15, qword ptr [rbx]
- mov r14, 0xD1FFAB1E ; System.RuntimeType
- cmp r15, r14
- jne G_M8853_IG11
- mov r13, qword ptr [rbx+0x18]
- mov edi, r13d
+ cmp byte ptr [rbx], bl
+ mov r15, rbx
+ ; gcrRegs +[r15]
+ test r15, r15
+ je SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, 0xD1FFAB1E ; System.RuntimeType
+ cmp qword ptr [r15], rdi
+ je SHORT G_M8853_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ xor r15, r15
+ ; gcrRegs +[r15]
+ ;; size=3 bbWeight=0.25 PerfScore 0.06
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ test r15, r15
+ je G_M8853_IG14
+ mov r14, qword ptr [r15+0x18]
+ mov edi, r14d
and edi, 2
- jne SHORT G_M8853_IG10
+ jne G_M8853_IG13
test edi, edi
sete dil
movzx rdi, dil
call [<unknown method>]
- mov eax, dword ptr [r13]
+ mov eax, dword ptr [r14]
and eax, 0xD1FFAB1E
- xor r13d, r13d
+ xor r14d, r14d
cmp eax, 0xD1FFAB1E
- sete r13b
- ;; size=71 bbWeight=1 PerfScore 15.25
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- movzx rcx, r13b
+ sete r14b
+ ;; size=61 bbWeight=1 PerfScore 13.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rcx, r14b
test ecx, ecx
- jne SHORT G_M8853_IG12
+ jne SHORT G_M8853_IG15
;; size=8 bbWeight=1 PerfScore 1.50
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
cmp rbx, rax
- je SHORT G_M8853_IG07
- cmp r15, r14
- jne SHORT G_M8853_IG09
+ je SHORT G_M8853_IG10
+ mov rdi, 0xD1FFAB1E ; System.RuntimeType
+ cmp qword ptr [rbx], rdi
+ jne SHORT G_M8853_IG12
mov rdi, rbx
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rbx rdi]
- ;; size=29 bbWeight=1 PerfScore 6.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ;; size=39 bbWeight=1 PerfScore 9.00
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M8853_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M8853_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M8853_IG07: ; bbWeight=0.79, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M8853_IG10: ; bbWeight=0.79, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.79 PerfScore 0.20
-G_M8853_IG08: ; bbWeight=0.79, epilog, nogc, extend
+G_M8853_IG11: ; bbWeight=0.79, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.79 PerfScore 2.75
-G_M8853_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0.79 PerfScore 2.55
+G_M8853_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -110,14 +124,15 @@ G_M8853_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
mov rax, qword ptr [rax+0xA0]
call [rax+0x20]<unknown method>
; gcrRegs -[rbx rdi] +[rax]
- jmp SHORT G_M8853_IG05
+ jmp SHORT G_M8853_IG08
;; size=18 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx]
- xor r13d, r13d
- jmp SHORT G_M8853_IG03
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rbx r15]
+ xor r14d, r14d
+ jmp SHORT G_M8853_IG06
;; size=5 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [rbx]
@@ -128,23 +143,23 @@ G_M8853_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
test al, 32
setne cl
test ecx, ecx
- je SHORT G_M8853_IG04
+ je SHORT G_M8853_IG07
;; size=24 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M8853_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 211, prolog size 13, PerfScore 35.20, instruction count 71, allocated bytes for code 211 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 244, prolog size 12, PerfScore 42.19, instruction count 78, allocated bytes for code 244 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -152,13 +167,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
+ SizeOfProlog : 0x07
CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-23 (-50.00%) : 34886.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)
@@ -2,53 +2,36 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M24927_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M24927_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M24927_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -56,10 +39,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-50.00%) : 142275.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -2,54 +2,37 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi 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) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, 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 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -57,10 +40,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-46.94%) : 30463.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)
@@ -2,56 +2,39 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp 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 <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> rsi single-def
-; V02 arg1 [V02,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rsi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ push rax
+ mov qword ptr [rsp], rsi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M29555_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rsi+0x38]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M29555_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
mov rsi, rdx
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx rsi] +[rax]
- ;; size=8 bbWeight=0.12 PerfScore 0.16
-G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M29555_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp
+ ;; size=16 bbWeight=1 PerfScore 5.50
+G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 14, PerfScore 8.41, instruction count 17, allocated bytes for code 49 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 5, PerfScore 8.75, instruction count 9, allocated bytes for code 26 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -59,10 +42,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+30 (+55.56%) : 93540.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)
@@ -8,27 +8,26 @@
; 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 -> rbx this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rdi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
-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 rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, gword ptr [rbx+0x10]
@@ -37,16 +36,25 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor edx, edx
call [<unknown method>]
; gcrRegs -[rsi rdi]
- mov rdi, gword ptr [rbx+0x08]
- ; gcrRegs +[rdi]
- cmp byte ptr [rdi], dil
+ mov rbx, gword ptr [rbx+0x08]
+ cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
call [System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rbx rdi]
- int3
- ;; size=43 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ ;; size=64 bbWeight=1 PerfScore 19.25
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [rax]System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 54, prolog size 8, PerfScore 0.00, instruction count 15, allocated bytes for code 54 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 26.25, instruction count 21, allocated bytes for code 84 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================
Unwind Info:
+30 (+55.56%) : 95144.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)
@@ -8,27 +8,26 @@
; 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 -> rbx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rdi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rdi "CSE - aggressive"
;
; Lcl frame size = 8
-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 rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, gword ptr [rbx+0x10]
@@ -37,16 +36,25 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
xor edx, edx
call [<unknown method>]
; gcrRegs -[rsi rdi]
- mov rdi, gword ptr [rbx+0x08]
- ; gcrRegs +[rdi]
- cmp byte ptr [rdi], dil
+ mov rbx, gword ptr [rbx+0x08]
+ cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rbx rdi]
- int3
- ;; size=43 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[rdi]
+ mov rsi, 0xD1FFAB1E
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ ;; size=64 bbWeight=1 PerfScore 19.25
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 54, prolog size 8, PerfScore 0.00, instruction count 15, allocated bytes for code 54 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 26.25, instruction count 21, allocated bytes for code 84 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================
Unwind Info:
+36 (+128.57%) : 93557.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,31 +8,42 @@
; 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 -> rdi this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V06 cse0 [V06,T02] ( 2, 0 ) ref -> rdi "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V04 cse0 [V04,T02] ( 2, 2 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08]
- cmp byte ptr [rdi], dil
+ mov rbx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rbx]
+ cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
; gcrRegs -[rdi]
- int3
- ;; size=24 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ xor esi, esi
+ mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ ;; size=47 bbWeight=1 PerfScore 9.25
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 28, prolog size 4, PerfScore 0.00, instruction count 7, allocated bytes for code 28 (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 16.00, instruction count 16, allocated bytes for code 64 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================
Unwind Info:
@@ -40,9 +51,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
realworld.run.linux.x64.checked.mch
-28 (-36.36%) : 412.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -2,69 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -72,11 +52,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-16 (-29.63%) : 32865.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)
@@ -2,59 +2,42 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> rbx this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M56342_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbx]
mov rdi, qword ptr [rdi+0x38]
mov rdi, qword ptr [rdi]
mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi
- je SHORT G_M56342_IG05
- ;; size=18 bbWeight=0.25 PerfScore 3.00
-G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M56342_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M56342_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ;; size=19 bbWeight=1 PerfScore 9.25
+G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 54, prolog size 12, PerfScore 11.88, 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 38, prolog size 10, PerfScore 13.50, instruction count 13, allocated bytes for code 38 (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:
@@ -62,11 +45,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-41 (-29.08%) : 8721.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1int
@@ -8,17 +8,13 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 23.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
+; V00 arg0 [V00,T00] ( 7, 22.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T03] ( 5, 5 ) ref -> rdi class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp3 [V07,T02] ( 2, 16 ) long -> rdi "fgMakeTemp is creating a new local variable"
-; V08 tmp4 [V08,T01] ( 4, 25 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V09 tmp5 [V09,T06] ( 2, 2 ) int -> rbx "Inlining Arg"
-; V10 tmp6 [V10,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
+; V05 tmp1 [V05,T02] ( 2, 2 ) int -> rbx "Inlining Arg"
+; V06 tmp2 [V06,T01] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
;
; Lcl frame size = 8
@@ -38,7 +34,7 @@ G_M51841_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M51841_IG08
+ jne SHORT G_M51841_IG06
;; size=23 bbWeight=8 PerfScore 22.00
G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -49,58 +45,39 @@ G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M51841_IG06
- mov rax, rbx
- mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi
- je SHORT G_M51841_IG05
- ;; size=41 bbWeight=4 PerfScore 29.00
-G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51841_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- mov rbx, gword ptr [rax+0x10]
- ; gcrRegs +[rbx]
+ je SHORT G_M51841_IG04
+ mov rbx, gword ptr [rbx+0x10]
jmp SHORT G_M51841_IG02
- ;; size=6 bbWeight=4 PerfScore 16.00
-G_M51841_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=29 bbWeight=4 PerfScore 27.00
+G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M51841_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M51841_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx]
+ mov ebx, dword ptr [rbx+0x10]
+ ; gcrRegs -[rbx]
+ mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov dword ptr [rax+0x08], ebx
+ ;; size=21 bbWeight=0.50 PerfScore 2.12
G_M51841_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M51841_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov rax, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rdi], rax
- cmovne rdi, rbx
- mov ebx, dword ptr [rdi+0x10]
- ; gcrRegs -[rbx]
- mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
- ; gcrRegs -[rdi]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov dword ptr [rax+0x08], ebx
- ;; size=41 bbWeight=0.50 PerfScore 4.00
-G_M51841_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 141, prolog size 11, PerfScore 103.50, instruction count 39, allocated bytes for code 141 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
+; Total bytes of code 100, prolog size 11, PerfScore 83.50, instruction count 30, allocated bytes for code 100 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
; ============================================================
Unwind Info:
+3 (+0.76%) : 29649.dasm - System.Management.Automation.Runspaces.InitialSessionStateEntryCollection1[System.__Canon]:Clone():System.Management.Automation.Runspaces.InitialSessionStateEntryCollection1[System.__Canon]:this (FullOpts)
@@ -8,48 +8,50 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 7, 8 ) ref -> [rbp-0x20] this class-hnd EH-live single-def <System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]>
-; V01 loc0 [V01,T10] ( 3, 4 ) ref -> rbx class-hnd exact single-def <System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]>
-; V02 loc1 [V02,T11] ( 4, 1.50) ref -> [rbp-0x28] class-hnd EH-live spill-single-def <System.Object>
-; V03 loc2 [V03 ] ( 5, 4 ) ubyte -> [rbp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V04 loc3 [V04,T04] ( 6, 11 ) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
-;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V00 this [V00,T03] ( 6, 7 ) ref -> [rbp-0x30] this class-hnd EH-live single-def <System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]>
+; V01 loc0 [V01,T10] ( 3, 4 ) ref -> r15 class-hnd exact single-def <System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]>
+; V02 loc1 [V02,T12] ( 4, 1.50) ref -> [rbp-0x38] class-hnd EH-live spill-single-def <System.Object>
+; V03 loc2 [V03 ] ( 5, 4 ) ubyte -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V04 loc3 [V04,T02] ( 6, 11 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V05 loc4 [V05,T08] ( 3, 6 ) ref -> rax class-hnd <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T08] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]>
+; V07 tmp1 [V07,T09] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]>
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp3 [V09,T01] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
-; V10 tmp4 [V10,T06] ( 3, 9 ) ref -> rax "CASTCLASS eval op1"
-; V11 tmp5 [V11,T09] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V12 tmp6 [V12,T00] ( 5, 15 ) ref -> rsi class-hnd "spilling QMark2" <System.__Canon>
-; V13 tmp7 [V13,T02] ( 3, 12 ) ref -> rax "argument with side effect"
-; V14 PSPSym [V14,T12] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V15 rat0 [V15,T07] ( 3, 8.80) long -> rsi "Spilling to split statement for tree"
-; V16 rat1 [V16,T03] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V09 tmp3 [V09,T00] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp4 [V10,T05] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V11 tmp5 [V11,T07] ( 2, 8 ) long -> r14 "argument with side effect"
+; V12 tmp6 [V12,T06] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V13 PSPSym [V13,T13] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T11] ( 3, 4 ) long -> rbx "CSE - moderate"
+; V15 rat0 [V15,T04] ( 3, 8.80) long -> rsi "Spilling to split statement for tree"
+; V16 rat1 [V16,T01] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 56
G_M6444_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
+ push r14
push rbx
sub rsp, 56
- lea rbp, [rsp+0x40]
+ lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x18], rax
- mov qword ptr [rbp-0x40], rsp
- mov qword ptr [rbp-0x10], rdi
- mov gword ptr [rbp-0x20], rdi
+ mov qword ptr [rbp-0x28], rax
+ mov qword ptr [rbp-0x50], rsp
+ mov qword ptr [rbp-0x20], rdi
+ mov gword ptr [rbp-0x30], rdi
; GC ptr vars +{V00}
- ;; size=29 bbWeight=1 PerfScore 7.00
-G_M6444_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=33 bbWeight=1 PerfScore 9.00
+G_M6444_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
mov rsi, gword ptr [rdi+0x10]
; gcrRegs +[rsi]
- mov gword ptr [rbp-0x28], rsi
+ mov gword ptr [rbp-0x38], rsi
; GC ptr vars +{V02}
;; size=8 bbWeight=1 PerfScore 3.00
-G_M6444_IG03: ; bbWeight=1, gcVars=0000000000000820 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M6444_IG03: ; bbWeight=1, gcVars=0000000000001008 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi]
- cmp byte ptr [rbp-0x18], 0
+ cmp byte ptr [rbp-0x28], 0
je SHORT G_M6444_IG05
;; size=6 bbWeight=1 PerfScore 3.00
G_M6444_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -58,30 +60,31 @@ G_M6444_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
G_M6444_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [rbp-0x18]
- mov rdi, gword ptr [rbp-0x28]
+ lea rsi, [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
call <unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- movzx rdi, byte ptr [rbp-0x18]
+ movzx rdi, byte ptr [rbp-0x28]
call [<unknown method>]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x20]
+ mov rdi, gword ptr [rbp-0x30]
; gcrRegs +[rdi]
- mov rdi, qword ptr [rdi]
+ mov rbx, qword ptr [rdi]
+ mov rdi, rbx
; gcrRegs -[rdi]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rdi, rbx
+ mov r15, rax
+ ; gcrRegs +[r15]
+ mov rdi, r15
; gcrRegs +[rdi]
call [System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:.ctor():this]
; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x20]
+ mov rdi, gword ptr [rbp-0x30]
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
cmp dword ptr [rdi], edi
@@ -90,16 +93,16 @@ G_M6444_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x30], rdi
+ mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V04}
- ;; size=71 bbWeight=1 PerfScore 24.25
-G_M6444_IG06: ; bbWeight=1, gcVars=0000000000000830 {V00 V02 V04}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=74 bbWeight=1 PerfScore 24.50
+G_M6444_IG06: ; bbWeight=1, gcVars=000000000000100C {V00 V02 V04}, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M6444_IG14
+ jmp SHORT G_M6444_IG11
;; size=2 bbWeight=1 PerfScore 2.00
-G_M6444_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M6444_IG07: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x20]
+ mov rdi, gword ptr [rbp-0x30]
; gcrRegs +[rdi]
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x38]
@@ -108,23 +111,26 @@ G_M6444_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
test r11, r11
je SHORT G_M6444_IG09
;; size=23 bbWeight=2 PerfScore 20.50
-G_M6444_IG08: ; bbWeight=1.60, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M6444_IG08: ; bbWeight=1.60, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
jmp SHORT G_M6444_IG10
;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M6444_IG09: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M6444_IG09: ; bbWeight=0.40, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
;; size=21 bbWeight=0.40 PerfScore 0.70
-G_M6444_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x30]
+G_M6444_IG10: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
call [r11]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
+ mov rdi, qword ptr [rbx+0x38]
+ mov rdi, qword ptr [rdi]
+ mov r14, qword ptr [rdi]
mov rdi, rax
; gcrRegs +[rdi]
mov rax, qword ptr [rax]
@@ -135,139 +141,127 @@ G_M6444_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- test rsi, rsi
- je SHORT G_M6444_IG13
- ;; size=28 bbWeight=2 PerfScore 25.50
-G_M6444_IG11: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x20]
- ; gcrRegs +[rdi]
- mov rcx, qword ptr [rdi]
- mov rcx, qword ptr [rcx+0x38]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [rsi], rcx
- je SHORT G_M6444_IG13
- ;; size=22 bbWeight=1 PerfScore 13.00
-G_M6444_IG12: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
- mov rdi, rcx
- mov rsi, rax
- ; gcrRegs +[rsi]
+ mov rdi, r14
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- ;; size=14 bbWeight=0.50 PerfScore 0.88
-G_M6444_IG13: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
call [<unknown method>]
- ; gcrRegs -[rsi rdi]
+ ; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
- ;; size=13 bbWeight=2 PerfScore 8.50
-G_M6444_IG14: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ;; size=57 bbWeight=2 PerfScore 46.50
+G_M6444_IG11: ; bbWeight=8, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- jne G_M6444_IG07
- ;; size=21 bbWeight=8 PerfScore 36.00
-G_M6444_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rbp-0x30]
+ jne SHORT G_M6444_IG07
+ ;; size=17 bbWeight=8 PerfScore 36.00
+G_M6444_IG12: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
- ; GC ptr vars -{V04}
+ ; GC ptr vars -{V02 V04}
call [r11]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
nop
;; size=18 bbWeight=1 PerfScore 4.50
-G_M6444_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [rbp-0x18], 0
- je SHORT G_M6444_IG18
+G_M6444_IG13: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ cmp byte ptr [rbp-0x28], 0
+ je SHORT G_M6444_IG15
;; size=6 bbWeight=1 PerfScore 3.00
-G_M6444_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rbp-0x28]
+G_M6444_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
...
+2 (+1.05%) : 8843.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
@@ -8,36 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo>
-; V01 arg1 [V01,T01] ( 5, 3.50) ref -> r15 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 4, 3.50) ref -> r15 this class-hnd single-def <FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo>
+; V01 arg1 [V01,T00] ( 5, 3.50) ref -> rbx class-hnd single-def <System.String>
; V02 loc0 [V02 ] ( 2, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 1 ) int -> rdi
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
+; V06 tmp1 [V06,T06] ( 2, 1 ) int -> rdi
+; V07 tmp2 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp7 [V12,T10] ( 2, 1 ) int -> rax
+; V12 tmp7 [V12,T07] ( 2, 1 ) int -> rax
; V13 tmp8 [V13 ] ( 2, 2 ) struct ( 8) [rbp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int32>
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V16 tmp11 [V16,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V17 tmp12 [V17,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V18 tmp13 [V18,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V19 tmp14 [V19,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
-; V21 tmp16 [V21 ] ( 2, 1 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V02.item (fldOffset=0x0)" P-DEP
-; V22 tmp17 [V22 ] ( 2, 1 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V02._tag (fldOffset=0x4)" P-DEP
-;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V03.item (fldOffset=0x0)" P-INDEP
-;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "field V03._tag (fldOffset=0x4)" P-INDEP
-; V25 tmp20 [V25 ] ( 2, 1.50) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V13.m_value (fldOffset=0x0)" P-DEP
-;* V26 tmp21 [V26,T11] ( 0, 0 ) int -> zero-ref single-def "field V20.item (fldOffset=0x0)" P-INDEP
-;* V27 tmp22 [V27,T12] ( 0, 0 ) int -> zero-ref single-def "field V20._tag (fldOffset=0x4)" P-INDEP
-; V28 tmp23 [V28,T05] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V29 tmp24 [V29,T06] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
+; V17 tmp12 [V17 ] ( 2, 1 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V02.item (fldOffset=0x0)" P-DEP
+; V18 tmp13 [V18 ] ( 2, 1 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V02._tag (fldOffset=0x4)" P-DEP
+;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03.item (fldOffset=0x0)" P-INDEP
+;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref single-def "field V03._tag (fldOffset=0x4)" P-INDEP
+; V21 tmp16 [V21 ] ( 2, 1.50) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V13.m_value (fldOffset=0x0)" P-DEP
+;* V22 tmp17 [V22,T08] ( 0, 0 ) int -> zero-ref single-def "field V16.item (fldOffset=0x0)" P-INDEP
+;* V23 tmp18 [V23,T09] ( 0, 0 ) int -> zero-ref single-def "field V16._tag (fldOffset=0x4)" P-INDEP
+; V24 tmp19 [V24,T03] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V25 tmp20 [V25,T04] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V26 cse0 [V26,T05] ( 3, 1.50) ref -> r15 "CSE - moderate"
;
; Lcl frame size = 16
@@ -49,13 +46,13 @@ G_M40596_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
lea rbp, [rsp+0x20]
xor eax, eax
mov qword ptr [rbp-0x18], rax
- mov rbx, rdi
- ; gcrRegs +[rbx]
- mov r15, rsi
+ mov r15, rdi
; gcrRegs +[r15]
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
;; size=25 bbWeight=1 PerfScore 5.50
G_M40596_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
@@ -65,10 +62,10 @@ G_M40596_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
;; size=23 bbWeight=1 PerfScore 2.75
G_M40596_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov edi, dword ptr [rbx+0x08]
+ mov edi, dword ptr [r15+0x08]
test edi, edi
je SHORT G_M40596_IG04
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [FSharp.Compiler.Syntax.PrettyNaming:TryDemangleGenericNameAndPos(System.String):Microsoft.FSharp.Core.FSharpValueOption`1[int]]
; gcrRegs -[rdi]
@@ -88,10 +85,10 @@ G_M40596_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rax rdx rsi]
test eax, eax
jne SHORT G_M40596_IG06
- ;; size=71 bbWeight=0.50 PerfScore 8.62
-G_M40596_IG04: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rax, r15
+ ;; size=72 bbWeight=0.50 PerfScore 8.62
+G_M40596_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M40596_IG05: ; bbWeight=0.50, epilog, nogc, extend
@@ -102,11 +99,11 @@ G_M40596_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.38
G_M40596_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx]
- mov eax, dword ptr [rbx+0x08]
+ ; gcrRegs -[rax] +[r15]
+ mov eax, dword ptr [r15+0x08]
mov dword ptr [rbp-0x20], eax
call [<unknown method>]
- ; gcrRegs -[rbx] +[rax]
+ ; gcrRegs -[r15] +[rax]
mov rdx, rax
; gcrRegs +[rdx]
lea rdi, [rbp-0x20]
@@ -116,14 +113,14 @@ G_M40596_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[rdx rsi]
mov rdx, rax
; gcrRegs +[rdx]
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rdx rsi rdi r15]
+ ; gcrRegs -[rdx rbx rsi rdi]
nop
- ;; size=50 bbWeight=0.50 PerfScore 7.00
+ ;; size=51 bbWeight=0.50 PerfScore 7.00
G_M40596_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
@@ -132,7 +129,7 @@ G_M40596_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 190, prolog size 19, PerfScore 26.75, instruction count 54, allocated bytes for code 190 (MethodHash=19a2616b) for method FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
+; Total bytes of code 192, prolog size 19, PerfScore 26.75, instruction count 54, allocated bytes for code 192 (MethodHash=19a2616b) for method FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
; ============================================================
Unwind Info:
+14 (+3.35%) : 32291.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.Canon]:<.cctor>b4_0(System.Object):this (FullOpts)
@@ -7,64 +7,65 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x38] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]>
-; V01 arg1 [V01,T00] ( 6, 5.50) ref -> rbx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [rbp-0x40] do-not-enreg[M] class-hnd exact EH-live <<unknown class>>
-; V03 loc1 [V03,T11] ( 4, 4 ) ref -> r14 class-hnd single-def <<unknown class>>
-; V04 loc2 [V04,T17] ( 2, 1 ) int -> [rbp-0x24] do-not-enreg[Z] EH-live
+; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x40] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T00] ( 10, 6 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <<unknown class>>
+; V03 loc1 [V03,T11] ( 4, 4 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T17] ( 2, 1 ) int -> [rbp-0x2C] 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 -> rbx class-hnd single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T16] ( 2, 3 ) long -> rsi "spilling helperCall"
-;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T02] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T03] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
-; V15 tmp8 [V15,T20] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V16 tmp9 [V16 ] ( 2, 0 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
-;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "spilled call-like call argument" <System.Threading.CancellationToken>
-; V18 tmp11 [V18 ] ( 2, 0 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V16._source (fldOffset=0x0)" P-DEP
-; V19 tmp12 [V19,T21] ( 2, 0 ) ref -> rsi "field V17._source (fldOffset=0x0)" P-INDEP
+; V11 tmp4 [V11,T02] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
+;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V13 tmp6 [V13,T03] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
+; V14 tmp7 [V14,T20] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V15 tmp8 [V15 ] ( 2, 0 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
+;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "spilled call-like call argument" <System.Threading.CancellationToken>
+; V17 tmp10 [V17 ] ( 2, 0 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V15._source (fldOffset=0x0)" P-DEP
+; V18 tmp11 [V18,T21] ( 2, 0 ) ref -> rsi "field V16._source (fldOffset=0x0)" P-INDEP
+; V19 tmp12 [V19,T14] ( 2, 4 ) long -> rsi "argument with side effect"
; V20 tmp13 [V20,T13] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V21 tmp14 [V21,T14] ( 2, 4 ) long -> rax "argument with side effect"
+; V21 tmp14 [V21,T15] ( 2, 4 ) long -> rdi "argument with side effect"
; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V23 cse0 [V23,T15] ( 3, 3 ) long -> rax "CSE - moderate"
-; V24 cse1 [V24,T08] ( 6, 4.56) long -> r15 "CSE - aggressive"
+; V23 cse0 [V23,T16] ( 3, 3 ) long -> r14 "CSE - moderate"
+; V24 cse1 [V24,T08] ( 6, 4.56) long -> r15 "CSE - moderate"
; V25 rat0 [V25,T10] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V26 rat1 [V26,T12] ( 3, 4 ) long -> rax "runtime lookup"
-; V27 rat2 [V27,T04] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V26 rat1 [V26,T12] ( 3, 4 ) long -> r14 "runtime lookup"
+; V27 rat2 [V27,T04] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
; V28 rat3 [V28,T05] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
; V29 rat4 [V29,T06] ( 3, 5.60) long -> rdi "spilling expr"
; V30 rat5 [V30,T09] ( 3, 4.48) long -> r11 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M57110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
push rbx
- sub rsp, 56
+ sub rsp, 48
lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x50], rsp
- mov qword ptr [rbp-0x20], rdi
- mov gword ptr [rbp-0x38], rdi
+ mov qword ptr [rbp-0x28], rdi
+ mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V00}
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=36 bbWeight=1 PerfScore 9.25
+ ;; size=38 bbWeight=1 PerfScore 10.25
G_M57110_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
mov r15, qword ptr [rdi]
mov rsi, r15
mov rax, qword ptr [rsi+0x38]
mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x10]
- test rax, rax
+ mov r14, qword ptr [rax+0x10]
+ test r14, r14
je SHORT G_M57110_IG04
;; size=22 bbWeight=1 PerfScore 9.50
G_M57110_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
@@ -76,30 +77,29 @@ G_M57110_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- ;; size=18 bbWeight=0.20 PerfScore 0.30
+ mov r14, rax
+ ;; size=21 bbWeight=0.20 PerfScore 0.35
G_M57110_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, rax
- mov gword ptr [rbp-0x40], rbx
- ; GC ptr vars +{V02}
- test rbx, rbx
- je SHORT G_M57110_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M57110_IG06: ; bbWeight=0.50, gcVars=0000000000000082 {V00 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp qword ptr [rbx], rsi
- jne SHORT G_M57110_IG08
- ;; size=5 bbWeight=0.50 PerfScore 2.00
-G_M57110_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, gword ptr [rbp-0x40]
+ mov rsi, r14
+ mov rdi, rsi
+ mov rsi, rbx
; gcrRegs +[rsi]
- mov r14, gword ptr [rsi+0x40]
- ; gcrRegs +[r14]
- test r14, r14
- jne SHORT G_M57110_IG10
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rsi r14]
- ; GC ptr vars -{V02}
- mov rdi, rax
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov gword ptr [rbp-0x48], rax
+ ; GC ptr vars +{V02}
+ test rax, rax
+ je SHORT G_M57110_IG06
+ mov r13, gword ptr [rax+0x40]
+ ; gcrRegs +[r13]
+ test r13, r13
+ jne SHORT G_M57110_IG08
+ ;; size=32 bbWeight=1 PerfScore 7.25
+G_M57110_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r13]
+ ; GC ptr vars -{V00 V02}
+ mov rdi, r14
mov rsi, rbx
; gcrRegs +[rsi]
call [<unknown method>]
@@ -107,116 +107,115 @@ G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=000
; gcr arg pop 0
nop
;; size=13 bbWeight=1 PerfScore 3.75
-G_M57110_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+G_M57110_IG07: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M57110_IG10: ; bbWeight=1, gcVars=0000000000000082 {V00 V02}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r14]
- ; GC ptr vars +{V01 V02}
- mov rsi, gword ptr [rbp-0x40]
- ; gcrRegs +[rsi]
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rsi+0x40], rax
- mov rsi, qword ptr [r15+0x38]
- ; gcrRegs -[rsi]
- mov rsi, qword ptr [rsi]
- mov r11, qword ptr [rsi+0x18]
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000081 {V00 V02}, gcrefRegs=2001 {rax r13}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rax r13]
+ ; GC ptr vars +{V00 V02}
+ xor rdi, rdi
+ ; gcrRegs +[rdi]
+ mov gword ptr [rax+0x40], rdi
+ mov rdi, qword ptr [r15+0x38]
+ ; gcrRegs -[rdi]
+ mov rdi, qword ptr [rdi]
+ mov r11, qword ptr [rdi+0x18]
test r11, r11
- je SHORT G_M57110_IG12
- ;; size=26 bbWeight=1 PerfScore 9.50
-G_M57110_IG11: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M57110_IG10
+ ;; size=22 bbWeight=1 PerfScore 8.50
+G_M57110_IG09: ; bbWeight=0.80, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M57110_IG13
+ jmp SHORT G_M57110_IG11
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M57110_IG12: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57110_IG10: ; bbWeight=0.20, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M57110_IG13: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
- mov rsi, gword ptr [rbp-0x40]
- ; gcrRegs +[rsi]
- movsx rsi, word ptr [rsi+0x48]
- ; gcrRegs -[rsi]
- mov rdi, r14
+G_M57110_IG11: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ mov rax, gword ptr [rbp-0x48]
+ ; gcrRegs +[rax]
+ movsx rsi, word ptr [rax+0x48]
+ mov rdi, r13
; gcrRegs +[rdi]
call [r11]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov dword ptr [rbp-0x24], eax
+ mov dword ptr [rbp-0x2C], eax
;; size=18 bbWeight=1 PerfScore 9.25
-G_M57110_IG14: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG12: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [r15+0x38]
mov rdi, qword ptr [rdi]
cmp qword ptr [rdi+0x08], 32
- jle SHORT G_M57110_IG17
+ jle SHORT G_M57110_IG15
;; size=14 bbWeight=1 PerfScore 8.00
-G_M57110_IG15: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG13: ; bbWeight=0.80, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov r11, qword ptr [rdi+0x20]
test r11, r11
- je SHORT G_M57110_IG17
+ je SHORT G_M57110_IG15
;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M57110_IG16: ; bbWeight=0.64, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M57110_IG18
+G_M57110_IG14: ; bbWeight=0.64, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M57110_IG16
;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M57110_IG17: ; bbWeight=0.36, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57110_IG15: ; bbWeight=0.36, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
...
smoke_tests.nativeaot.linux.x64.checked.mch
-21 (-33.33%) : 19596.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -3,74 +3,53 @@
; FullOpts code
; NativeAOT compilation
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rsi
- mov rbx, rsi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rsi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rdi, qword ptr [rbx]
+ mov rbx, qword ptr [rsi]
+ mov rdi, rbx
mov rsi, rdx
; gcrRegs +[rsi]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx rsi] +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M33075_IG05
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
- cmp qword ptr [rcx], rdi
- je SHORT G_M33075_IG05
- ;; size=8 bbWeight=0.25 PerfScore 1.50
-G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, rbx
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M33075_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 13.69, instruction count 23, allocated bytes for code 63 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x01 Op: RelOffset DwarfReg:0x3 Offset:0x0
+ CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10
-21 (-33.33%) : 20476.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -3,74 +3,53 @@
; FullOpts code
; NativeAOT compilation
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rsi
- mov rbx, rsi
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rsi
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rdi, qword ptr [rbx]
+ mov rbx, qword ptr [rsi]
+ mov rdi, rbx
mov rsi, rdx
; gcrRegs +[rsi]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx rsi] +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M33075_IG05
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx]
- cmp qword ptr [rcx], rdi
- je SHORT G_M33075_IG05
- ;; size=8 bbWeight=0.25 PerfScore 1.50
-G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ mov rdi, rbx
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M33075_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ; gcr arg pop 0
+ nop
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 13.69, instruction count 23, allocated bytes for code 63 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x01 Op: RelOffset DwarfReg:0x3 Offset:0x0
+ CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10
-19 (-29.69%) : 7100.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.Canon]:b11_1(System.Object):this (FullOpts)
@@ -3,71 +3,51 @@
; FullOpts code
; NativeAOT compilation
; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> rbx this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rdi class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M10356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rdi
+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M10356_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M10356_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M10356_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M10356_IG03: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x30]
- mov rax, qword ptr [rax]
- cmp qword ptr [rdi], rax
- je SHORT G_M10356_IG05
- ;; size=15 bbWeight=0.25 PerfScore 2.50
-G_M10356_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, rax
+ mov rdi, qword ptr [rbx]
+ mov rdi, qword ptr [rdi+0x30]
+ mov rdi, qword ptr [rdi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M10356_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
cmp dword ptr [rdi], edi
call System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
+ ; gcr arg pop 0
nop
- ;; size=8 bbWeight=1 PerfScore 4.25
-G_M10356_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ;; size=26 bbWeight=1 PerfScore 11.50
+G_M10356_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 64, prolog size 12, PerfScore 15.44, instruction count 24, allocated bytes for code 64 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
+; Total bytes of code 45, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 45 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x01 Op: RelOffset DwarfReg:0x3 Offset:0x0
+ CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10
+0 (0.00%) : 8530.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,12 +10,11 @@
; V00 this [V00,T01] ( 5, 4 ) ref -> r15 this class-hnd single-def <Internal.TypeSystem.MethodDesc>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 2, 1 ) int -> rdi
-;* V04 tmp2 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp3 [V05,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodDesc>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
-;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V03 tmp1 [V03,T02] ( 2, 1 ) int -> rdi
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V07 tmp5 [V07,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 8
+0 (0.00%) : 20230.dasm - Generics+TestNativeLayoutGeneration:Run() (FullOpts)
@@ -9,10 +9,8 @@
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Generics+TestNativeLayoutGeneration+Used>
-;* V02 tmp2 [V02 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
-; V04 tmp4 [V04,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
+; V02 tmp2 [V02,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
;
; Lcl frame size = 8
+1 (+0.20%) : 12364.dasm - System.Linq.Enumerable:SelectSystem.Canon,System.Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,23 +8,22 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T00] ( 15, 9.50) long -> rbx single-def
-; V01 arg0 [V01,T01] ( 10, 7 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T02] ( 9, 6.50) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T03] ( 10, 6 ) ref -> r14 class-hnd exact single-def <System.Func`2[System.__Canon,System.__Canon]>
; V03 loc0 [V03,T09] ( 5, 3 ) ref -> r13 class-hnd single-def <System.Linq.Enumerable+Iterator`1[System.__Canon]>
-; V04 loc1 [V04,T13] ( 3, 1.50) ref -> r13 class-hnd single-def <System.Collections.Generic.IList`1[System.__Canon]>
-; V05 loc2 [V05,T14] ( 3, 1.50) ref -> rax class-hnd single-def <System.Linq.IPartition`1[System.__Canon]>
-; V06 loc3 [V06,T11] ( 4, 2 ) ref -> r12 class-hnd single-def <System.__Canon[]>
-;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V04 loc1 [V04,T12] ( 3, 1.50) ref -> r13 class-hnd single-def <System.Collections.Generic.IList`1[System.__Canon]>
+; V05 loc2 [V05,T13] ( 3, 1.50) ref -> rax class-hnd single-def <System.Linq.IPartition`1[System.__Canon]>
+; V06 loc3 [V06,T10] ( 4, 2 ) ref -> r12 class-hnd single-def <System.__Canon[]>
+; V07 loc4 [V07,T14] ( 3, 1.50) ref -> r15 class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
; V08 loc5 [V08 ] ( 4, 2 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T04] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectEnumerableIterator`2[System.__Canon,System.__Canon]>
-; V11 tmp2 [V11,T10] ( 3, 3 ) ref -> r15 class-hnd exact "spilling QMark2" <System.Collections.Generic.List`1[System.__Canon]>
-; V12 tmp3 [V12,T05] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]>
-; V13 tmp4 [V13,T06] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]>
-; V14 tmp5 [V14,T07] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]>
-; V15 tmp6 [V15,T08] ( 5, 3.20) long -> rax "VirtualCall through function pointer"
-; V16 tmp7 [V16,T12] ( 3, 2 ) ref -> rax "calli"
-; V17 tmp8 [V17,T02] ( 8, 9 ) ref -> rax "Single return block return value"
+; V11 tmp2 [V11,T05] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]>
+; V12 tmp3 [V12,T06] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]>
+; V13 tmp4 [V13,T07] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]>
+; V14 tmp5 [V14,T08] ( 5, 3.20) long -> rax "VirtualCall through function pointer"
+; V15 tmp6 [V15,T11] ( 3, 2 ) ref -> rax "calli"
+; V16 tmp7 [V16,T01] ( 8, 9 ) ref -> rax "Single return block return value"
;
; Lcl frame size = 24
@@ -125,36 +124,38 @@ G_M24041_IG08: ; bbWeight=0.50, gcrefRegs=5000 {r12 r14}, byrefRegs=0000
mov rdi, qword ptr [rbx+0x28]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov r15, rax
- ; gcrRegs +[r15]
+ mov rbx, rax
+ ; gcrRegs +[rbx]
call System.Threading.ManagedThreadId:get_Current():int
; gcrRegs -[rax]
- mov dword ptr [r15+0x10], eax
- lea rdi, bword ptr [r15+0x18]
+ mov dword ptr [rbx+0x10], eax
+ lea rdi, bword ptr [rbx+0x18]
; byrRegs +[rdi]
mov rsi, r12
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi r12]
; byrRegs -[rdi]
- lea rdi, bword ptr [r15+0x20]
+ lea rdi, bword ptr [rbx+0x20]
; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi r14]
; byrRegs -[rdi]
- mov rax, r15
+ mov rax, rbx
; gcrRegs +[rax]
jmp G_M24041_IG13
- ;; size=53 bbWeight=0.50 PerfScore 5.50
+ ;; size=52 bbWeight=0.50 PerfScore 5.50
G_M24041_IG09: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[r13-r14]
- mov rdi, qword ptr [r15]
- xor rax, rax
- ; gcrRegs +[rax]
- cmp rdi, qword ptr [rbx+0x18]
- cmovne r15, rax
+ ; gcrRegs -[rax rbx] +[r13-r15]
+ mov rdi, qword ptr [rbx+0x18]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi r15] +[rax]
+ mov r15, rax
+ ; gcrRegs +[r15]
test r15, r15
je SHORT G_M24041_IG10
mov rdi, qword ptr [rbx+0x30]
@@ -182,7 +183,7 @@ G_M24041_IG09: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
mov rax, rbx
; gcrRegs +[rax]
jmp G_M24041_IG13
- ;; size=70 bbWeight=0.50 PerfScore 8.88
+ ;; size=72 bbWeight=0.50 PerfScore 7.88
G_M24041_IG10: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbx] +[r13-r14]
mov rdi, qword ptr [rbx+0x38]
@@ -288,7 +289,7 @@ G_M24041_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 496, prolog size 29, PerfScore 68.75, instruction count 142, allocated bytes for code 496 (MethodHash=3db4a216) for method System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 497, prolog size 29, PerfScore 67.75, instruction count 142, allocated bytes for code 497 (MethodHash=3db4a216) for method System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.x64.checked.mch |
135 |
117 |
12 |
6 |
-2,422 |
+168 |
| benchmarks.run_pgo.linux.x64.checked.mch |
2,008 |
1,964 |
44 |
0 |
-34,085 |
+156 |
| benchmarks.run_tiered.linux.x64.checked.mch |
36 |
30 |
6 |
0 |
-556 |
+152 |
| coreclr_tests.run.linux.x64.checked.mch |
220 |
180 |
18 |
22 |
-2,893 |
+572 |
| libraries.crossgen2.linux.x64.checked.mch |
1,097 |
1,092 |
5 |
0 |
-36,632 |
+108 |
| libraries.pmi.linux.x64.checked.mch |
547 |
504 |
25 |
18 |
-10,838 |
+226 |
| libraries_tests.run.linux.x64.Release.mch |
1,697 |
1,599 |
77 |
21 |
-33,058 |
+1,623 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
733 |
673 |
34 |
26 |
-15,877 |
+526 |
| realworld.run.linux.x64.checked.mch |
123 |
114 |
4 |
5 |
-2,218 |
+25 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
132 |
127 |
1 |
4 |
-2,258 |
+1 |
|
6,728 |
6,400 |
226 |
102 |
-140,837 |
+3,557 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
38,699 |
3,142 |
35,557 |
324 (0.76%) |
4,158 (9.70%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
142,743 |
60,171 |
82,572 |
156 (0.10%) |
15,634 (9.87%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
55,820 |
42,280 |
13,540 |
84 (0.15%) |
680 (1.20%) |
| coreclr_tests.run.linux.x64.checked.mch |
586,198 |
354,685 |
231,513 |
459 (0.08%) |
10,573 (1.77%) |
| libraries.crossgen2.linux.x64.checked.mch |
234,025 |
15 |
234,010 |
0 (0.00%) |
7 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
266,392 |
6 |
266,386 |
2,052 (0.69%) |
29,842 (10.07%) |
| libraries_tests.run.linux.x64.Release.mch |
717,753 |
495,575 |
222,178 |
1,402 (0.18%) |
43,899 (5.76%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
263,101 |
21,873 |
241,228 |
2,099 (0.69%) |
42,247 (13.84%) |
| realworld.run.linux.x64.checked.mch |
28,481 |
9 |
28,472 |
341 (1.03%) |
4,588 (13.87%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
26,261 |
10 |
26,251 |
5 (0.02%) |
1,161 (4.23%) |
|
2,359,473 |
977,766 |
1,381,707 |
6,922 (0.28%) |
152,789 (6.08%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11100096 (overridden on cmd)
Total bytes of diff: 11097842 (overridden on cmd)
Total bytes of delta: -2254 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
19 : 18586.dasm (20.21 % of base)
19 : 21907.dasm (20.21 % of base)
19 : 19999.dasm (20.21 % of base)
19 : 24958.dasm (20.21 % of base)
19 : 36675.dasm (20.21 % of base)
19 : 40884.dasm (20.21 % of base)
14 : 11072.dasm (3.35 % of base)
14 : 16669.dasm (1.71 % of base)
14 : 5842.dasm (3.35 % of base)
6 : 2905.dasm (0.53 % of base)
3 : 2670.dasm (0.45 % of base)
3 : 11126.dasm (0.45 % of base)
Top file improvements (bytes):
-107 : 8198.dasm (-3.41 % of base)
-78 : 12681.dasm (-12.75 % of base)
-78 : 2172.dasm (-12.75 % of base)
-58 : 13894.dasm (-1.50 % of base)
-58 : 3786.dasm (-1.45 % of base)
-49 : 14917.dasm (-1.59 % of base)
-45 : 18148.dasm (-4.55 % of base)
-37 : 21927.dasm (-4.76 % of base)
-37 : 14389.dasm (-4.76 % of base)
-36 : 27686.dasm (-5.87 % of base)
-34 : 18256.dasm (-11.68 % of base)
-33 : 16568.dasm (-30.00 % of base)
-33 : 4604.dasm (-30.00 % of base)
-30 : 14191.dasm (-23.62 % of base)
-30 : 17408.dasm (-23.62 % of base)
-29 : 19944.dasm (-14.65 % of base)
-29 : 28904.dasm (-11.07 % of base)
-28 : 27078.dasm (-28.87 % of base)
-28 : 411.dasm (-36.36 % of base)
-28 : 9009.dasm (-36.36 % of base)
51 total files with Code Size differences (39 improved, 12 regressed), 6 unchanged.
Top method regressions (bytes):
19 (20.21 % of base) : 18586.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
19 (20.21 % of base) : 40884.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
19 (20.21 % of base) : 19999.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
19 (20.21 % of base) : 21907.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
19 (20.21 % of base) : 24958.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
19 (20.21 % of base) : 36675.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
14 (1.71 % of base) : 16669.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)
14 (3.35 % of base) : 11072.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
14 (3.35 % of base) : 5842.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (0.53 % of base) : 2905.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
3 (0.45 % of base) : 2670.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
3 (0.45 % of base) : 11126.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
Top method improvements (bytes):
-107 (-3.41 % of base) : 8198.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)
-78 (-12.75 % of base) : 12681.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)
-78 (-12.75 % of base) : 2172.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)
-58 (-1.50 % of base) : 13894.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-58 (-1.45 % of base) : 3786.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-49 (-1.59 % of base) : 14917.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)
-45 (-4.55 % of base) : 18148.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (FullOpts)
-37 (-4.76 % of base) : 21927.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-37 (-4.76 % of base) : 14389.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-36 (-5.87 % of base) : 27686.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-34 (-11.68 % of base) : 18256.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-33 (-30.00 % of base) : 16568.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-33 (-30.00 % of base) : 4604.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-30 (-23.62 % of base) : 14191.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-30 (-23.62 % of base) : 17408.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-29 (-14.65 % of base) : 19944.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (FullOpts)
-29 (-11.07 % of base) : 28904.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-28 (-28.87 % of base) : 27078.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-28 (-36.36 % of base) : 411.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-36.36 % of base) : 9009.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
Top method regressions (percentages):
19 (20.21 % of base) : 18586.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
19 (20.21 % of base) : 40884.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
19 (20.21 % of base) : 19999.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
19 (20.21 % of base) : 21907.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
19 (20.21 % of base) : 24958.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
19 (20.21 % of base) : 36675.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
14 (3.35 % of base) : 11072.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
14 (3.35 % of base) : 5842.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
14 (1.71 % of base) : 16669.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 (0.53 % of base) : 2905.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
3 (0.45 % of base) : 2670.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
3 (0.45 % of base) : 11126.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-23 (-50.00 % of base) : 6789.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-50.00 % of base) : 13296.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-36.36 % of base) : 411.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-36.36 % of base) : 9009.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-33 (-30.00 % of base) : 16568.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-33 (-30.00 % of base) : 4604.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-21 (-29.58 % of base) : 17612.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-16 (-29.09 % of base) : 2640.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-16 (-29.09 % of base) : 11290.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-28.87 % of base) : 27078.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-25 (-28.74 % of base) : 30782.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-25 (-26.60 % of base) : 15723.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-25 (-26.60 % of base) : 6398.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-18 (-25.35 % of base) : 14994.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-18 (-25.35 % of base) : 7297.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-30 (-23.62 % of base) : 14191.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-30 (-23.62 % of base) : 17408.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-16 (-21.05 % of base) : 19786.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-17 (-16.19 % of base) : 19115.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-17 (-16.19 % of base) : 8200.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 57263225 (overridden on cmd)
Total bytes of diff: 57229296 (overridden on cmd)
Total bytes of delta: -33929 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
37 : 142533.dasm (2.35 % of base)
37 : 147677.dasm (2.35 % of base)
18 : 141136.dasm (9.57 % of base)
18 : 99320.dasm (9.57 % of base)
7 : 92755.dasm (0.32 % of base)
1 : 114248.dasm (0.14 % of base)
1 : 127292.dasm (0.14 % of base)
1 : 46824.dasm (0.14 % of base)
1 : 48332.dasm (0.14 % of base)
1 : 71124.dasm (0.14 % of base)
1 : 135244.dasm (0.14 % of base)
1 : 146548.dasm (0.14 % of base)
1 : 113811.dasm (0.14 % of base)
1 : 130911.dasm (0.14 % of base)
1 : 151779.dasm (0.14 % of base)
1 : 50136.dasm (0.14 % of base)
1 : 68028.dasm (0.14 % of base)
1 : 42528.dasm (0.14 % of base)
1 : 57996.dasm (0.14 % of base)
1 : 77296.dasm (0.14 % of base)
Top file improvements (bytes):
-124 : 94239.dasm (-3.19 % of base)
-33 : 104109.dasm (-6.99 % of base)
-30 : 92758.dasm (-1.17 % of base)
-28 : 33442.dasm (-28.57 % of base)
-28 : 12256.dasm (-36.36 % of base)
-28 : 52570.dasm (-9.59 % of base)
-27 : 81708.dasm (-7.14 % of base)
-26 : 26741.dasm (-3.54 % of base)
-26 : 32981.dasm (-3.54 % of base)
-26 : 23289.dasm (-3.54 % of base)
-26 : 27093.dasm (-3.54 % of base)
-26 : 24681.dasm (-3.54 % of base)
-26 : 28429.dasm (-3.54 % of base)
-26 : 30101.dasm (-3.54 % of base)
-26 : 37713.dasm (-3.54 % of base)
-26 : 13689.dasm (-3.54 % of base)
-26 : 21821.dasm (-3.54 % of base)
-26 : 26917.dasm (-3.54 % of base)
-26 : 36305.dasm (-3.54 % of base)
-26 : 39613.dasm (-3.54 % of base)
57 total files with Code Size differences (37 improved, 20 regressed), 0 unchanged.
Top method regressions (bytes):
37 (2.35 % of base) : 142533.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
37 (2.35 % of base) : 147677.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
18 (9.57 % of base) : 99320.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
18 (9.57 % of base) : 141136.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
7 (0.32 % of base) : 92755.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
1 (0.14 % of base) : 114248.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 127292.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 46824.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 48332.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 71124.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 135244.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 146548.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 113811.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 130911.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 151779.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 50136.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 68028.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 42528.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 57996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 77296.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (bytes):
-124 (-3.19 % of base) : 94239.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-33 (-6.99 % of base) : 104109.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-30 (-1.17 % of base) : 92758.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
-28 (-36.36 % of base) : 12256.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-9.59 % of base) : 52570.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-28.57 % of base) : 33442.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-27 (-7.14 % of base) : 81708.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-26 (-3.54 % of base) : 26741.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 32981.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 23289.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 27093.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 24681.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 28429.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 30101.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 37713.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 13689.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 21821.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 26917.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 36305.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-26 (-3.54 % of base) : 39613.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
18 (9.57 % of base) : 99320.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
18 (9.57 % of base) : 141136.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
37 (2.35 % of base) : 142533.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
37 (2.35 % of base) : 147677.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
7 (0.32 % of base) : 92755.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
1 (0.14 % of base) : 114248.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 127292.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 46824.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 48332.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 71124.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 135244.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 146548.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 113811.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 130911.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 151779.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 50136.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 68028.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 42528.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 57996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
1 (0.14 % of base) : 77296.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (percentages):
-28 (-36.36 % of base) : 12256.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-28.57 % of base) : 33442.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-23 (-21.10 % of base) : 89681.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-13 (-10.32 % of base) : 103272.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-28 (-9.59 % of base) : 52570.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-22 (-9.02 % of base) : 7639.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-17 (-7.14 % of base) : 89417.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-27 (-7.14 % of base) : 81708.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-33 (-6.99 % of base) : 104109.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-6.88 % of base) : 103390.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-14 (-6.42 % of base) : 104049.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-12 (-5.66 % of base) : 94225.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-9 (-5.59 % of base) : 103694.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-5.34 % of base) : 81109.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-19 (-5.34 % of base) : 29895.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-17 (-4.58 % of base) : 102915.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-16 (-4.22 % of base) : 99131.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-20 (-4.08 % of base) : 153987.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-4.08 % of base) : 63033.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-4.08 % of base) : 57020.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15422994 (overridden on cmd)
Total bytes of diff: 15422590 (overridden on cmd)
Total bytes of delta: -404 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
26 : 55997.dasm (22.61 % of base)
26 : 25181.dasm (22.61 % of base)
25 : 28975.dasm (21.93 % of base)
25 : 32433.dasm (21.93 % of base)
25 : 53453.dasm (21.93 % of base)
25 : 27969.dasm (21.93 % of base)
Top file improvements (bytes):
-36 : 38725.dasm (-6.37 % of base)
-29 : 45702.dasm (-11.07 % of base)
-29 : 48912.dasm (-14.65 % of base)
-28 : 50556.dasm (-28.57 % of base)
-28 : 4411.dasm (-9.59 % of base)
-28 : 5433.dasm (-36.36 % of base)
-26 : 45546.dasm (-14.53 % of base)
-26 : 44245.dasm (-6.47 % of base)
-25 : 53381.dasm (-26.60 % of base)
-22 : 16136.dasm (-9.02 % of base)
-22 : 46057.dasm (-12.87 % of base)
-21 : 26528.dasm (-29.58 % of base)
-18 : 42327.dasm (-3.51 % of base)
-18 : 40128.dasm (-17.31 % of base)
-16 : 46208.dasm (-5.03 % of base)
-16 : 21575.dasm (-9.52 % of base)
-16 : 21630.dasm (-21.05 % of base)
-16 : 5359.dasm (-4.55 % of base)
-14 : 4415.dasm (-5.62 % of base)
-14 : 7187.dasm (-2.85 % of base)
36 total files with Code Size differences (30 improved, 6 regressed), 0 unchanged.
Top method regressions (bytes):
26 (22.61 % of base) : 25181.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
26 (22.61 % of base) : 55997.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
25 (21.93 % of base) : 27969.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
25 (21.93 % of base) : 28975.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
25 (21.93 % of base) : 32433.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
25 (21.93 % of base) : 53453.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (bytes):
-36 (-6.37 % of base) : 38725.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier1)
-29 (-14.65 % of base) : 48912.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-29 (-11.07 % of base) : 45702.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-36.36 % of base) : 5433.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-9.59 % of base) : 4411.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-28.57 % of base) : 50556.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-26 (-14.53 % of base) : 45546.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-6.47 % of base) : 44245.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
-25 (-26.60 % of base) : 53381.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-22 (-12.87 % of base) : 46057.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-22 (-9.02 % of base) : 16136.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-21 (-29.58 % of base) : 26528.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-18 (-3.51 % of base) : 42327.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
-18 (-17.31 % of base) : 40128.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-16 (-9.52 % of base) : 21575.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-16 (-21.05 % of base) : 21630.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-16 (-5.03 % of base) : 46208.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-16 (-4.55 % of base) : 5359.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier1)
-14 (-14.14 % of base) : 21643.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Apply(BenchmarkDotNet.Characteristics.CharacteristicObject):System.__Canon:this (Tier1)
-14 (-7.25 % of base) : 45607.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
Top method regressions (percentages):
26 (22.61 % of base) : 25181.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
26 (22.61 % of base) : 55997.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
25 (21.93 % of base) : 27969.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
25 (21.93 % of base) : 28975.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
25 (21.93 % of base) : 32433.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
25 (21.93 % of base) : 53453.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (percentages):
-28 (-36.36 % of base) : 5433.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-21 (-29.58 % of base) : 26528.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-28 (-28.57 % of base) : 50556.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-25 (-26.60 % of base) : 53381.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-16 (-21.05 % of base) : 21630.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
-18 (-17.31 % of base) : 40128.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-29 (-14.65 % of base) : 48912.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
-26 (-14.53 % of base) : 45546.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-14 (-14.14 % of base) : 21643.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Apply(BenchmarkDotNet.Characteristics.CharacteristicObject):System.__Canon:this (Tier1)
-22 (-12.87 % of base) : 46057.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-29 (-11.07 % of base) : 45702.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-13 (-10.48 % of base) : 44384.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-28 (-9.59 % of base) : 4411.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-16 (-9.52 % of base) : 21575.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
-13 (-9.35 % of base) : 43564.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-22 (-9.02 % of base) : 16136.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-13 (-8.28 % of base) : 46541.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-13 (-7.88 % of base) : 40125.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-14 (-7.25 % of base) : 45607.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-6.47 % of base) : 44245.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
36 total methods with Code Size differences (30 improved, 6 regressed).
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 378105284 (overridden on cmd)
Total bytes of diff: 378102963 (overridden on cmd)
Total bytes of delta: -2321 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
89 : 402384.dasm (1.55 % of base)
89 : 402405.dasm (1.55 % of base)
68 : 529191.dasm (1.79 % of base)
44 : 396477.dasm (3.99 % of base)
44 : 495524.dasm (400.00 % of base)
44 : 387210.dasm (3.99 % of base)
28 : 541452.dasm (3.26 % of base)
27 : 390440.dasm (1.76 % of base)
27 : 397373.dasm (1.79 % of base)
23 : 235546.dasm (0.74 % of base)
19 : 248124.dasm (4.80 % of base)
14 : 580276.dasm (1.94 % of base)
13 : 488740.dasm (1.71 % of base)
13 : 489076.dasm (1.71 % of base)
13 : 489134.dasm (1.71 % of base)
8 : 235572.dasm (0.55 % of base)
6 : 236536.dasm (2.87 % of base)
3 : 594554.dasm (0.75 % of base)
Top file improvements (bytes):
-62 : 35434.dasm (-2.41 % of base)
-58 : 389741.dasm (-2.41 % of base)
-48 : 397160.dasm (-2.02 % of base)
-44 : 528649.dasm (-21.26 % of base)
-43 : 400679.dasm (-4.23 % of base)
-37 : 502802.dasm (-4.48 % of base)
-36 : 498132.dasm (-5.87 % of base)
-30 : 401176.dasm (-3.15 % of base)
-30 : 490659.dasm (-10.83 % of base)
-30 : 490646.dasm (-10.83 % of base)
-29 : 400677.dasm (-3.05 % of base)
-29 : 499596.dasm (-11.07 % of base)
-28 : 534641.dasm (-23.93 % of base)
-28 : 502828.dasm (-8.19 % of base)
-28 : 1209.dasm (-36.36 % of base)
-28 : 592272.dasm (-36.36 % of base)
-26 : 381259.dasm (-20.63 % of base)
-26 : 501507.dasm (-14.53 % of base)
-26 : 500812.dasm (-6.47 % of base)
-25 : 198908.dasm (-22.12 % of base)
62 total files with Code Size differences (44 improved, 18 regressed), 20 unchanged.
Top method regressions (bytes):
89 (1.55 % of base) : 402384.dasm - Program:TestCase0003() (FullOpts)
89 (1.55 % of base) : 402405.dasm - Program:TestCase0003() (FullOpts)
68 (1.79 % of base) : 529191.dasm - Test_throw2dimarray.App:Main():int (FullOpts)
44 (3.99 % of base) : 396477.dasm - ILCompiler.InstructionSetSupport:GetHardwareIntrinsicId(int,Internal.TypeSystem.TypeDesc):System.String (Tier1)
44 (3.99 % of base) : 387210.dasm - ILCompiler.InstructionSetSupport:GetHardwareIntrinsicId(int,Internal.TypeSystem.TypeDesc):System.String (Tier1)
44 (400.00 % of base) : 495524.dasm - T:TestEntryPoint():int (FullOpts)
28 (3.26 % of base) : 541452.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
27 (1.76 % of base) : 390440.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
27 (1.79 % of base) : 397373.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
23 (0.74 % of base) : 235546.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
19 (4.80 % of base) : 248124.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
14 (1.94 % of base) : 580276.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
13 (1.71 % of base) : 488740.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.71 % of base) : 489076.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.71 % of base) : 489134.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
8 (0.55 % of base) : 235572.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
6 (2.87 % of base) : 236536.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
3 (0.75 % of base) : 594554.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
Top method improvements (bytes):
-62 (-2.41 % of base) : 35434.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-58 (-2.41 % of base) : 389741.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ComputeTypeReferenceVersionsWithCode(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-48 (-2.02 % of base) : 397160.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ComputeTypeReferenceVersionsWithCode(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-44 (-21.26 % of base) : 528649.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-43 (-4.23 % of base) : 400679.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-37 (-4.48 % of base) : 502802.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-36 (-5.87 % of base) : 498132.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-30 (-3.15 % of base) : 401176.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-30 (-10.83 % of base) : 490659.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-30 (-10.83 % of base) : 490646.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-29 (-3.05 % of base) : 400677.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-29 (-11.07 % of base) : 499596.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-28 (-23.93 % of base) : 534641.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-28 (-36.36 % of base) : 592272.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-36.36 % of base) : 1209.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-8.19 % of base) : 502828.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-26 (-14.53 % of base) : 501507.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-20.63 % of base) : 381259.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-26 (-6.47 % of base) : 500812.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-25 (-35.21 % of base) : 593421.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
Top method regressions (percentages):
44 (400.00 % of base) : 495524.dasm - T:TestEntryPoint():int (FullOpts)
19 (4.80 % of base) : 248124.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
44 (3.99 % of base) : 396477.dasm - ILCompiler.InstructionSetSupport:GetHardwareIntrinsicId(int,Internal.TypeSystem.TypeDesc):System.String (Tier1)
44 (3.99 % of base) : 387210.dasm - ILCompiler.InstructionSetSupport:GetHardwareIntrinsicId(int,Internal.TypeSystem.TypeDesc):System.String (Tier1)
28 (3.26 % of base) : 541452.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
6 (2.87 % of base) : 236536.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
14 (1.94 % of base) : 580276.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
68 (1.79 % of base) : 529191.dasm - Test_throw2dimarray.App:Main():int (FullOpts)
27 (1.79 % of base) : 397373.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
27 (1.76 % of base) : 390440.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
13 (1.71 % of base) : 488740.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.71 % of base) : 489076.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.71 % of base) : 489134.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
89 (1.55 % of base) : 402384.dasm - Program:TestCase0003() (FullOpts)
89 (1.55 % of base) : 402405.dasm - Program:TestCase0003() (FullOpts)
3 (0.75 % of base) : 594554.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
23 (0.74 % of base) : 235546.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
8 (0.55 % of base) : 235572.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
Top method improvements (percentages):
-28 (-36.36 % of base) : 592272.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-36.36 % of base) : 1209.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-25 (-35.21 % of base) : 593421.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-13 (-34.21 % of base) : 237826.dasm - Program:CastToArray(System.Object):int[] (Tier1)
-18 (-25.35 % of base) : 516649.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-25 (-24.27 % of base) : 476820.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-25 (-24.27 % of base) : 198935.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-28 (-23.93 % of base) : 534641.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-25 (-22.12 % of base) : 487661.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-25 (-22.12 % of base) : 198908.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-44 (-21.26 % of base) : 528649.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-26 (-20.63 % of base) : 381259.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-17 (-19.10 % of base) : 581330.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-13 (-17.11 % of base) : 540064.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-19 (-16.67 % of base) : 389496.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
-20 (-15.04 % of base) : 247129.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-26 (-14.53 % of base) : 501507.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-14 (-14.43 % of base) : 498343.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-21 (-13.91 % of base) : 490657.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-21 (-13.91 % of base) : 490645.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38686031 (overridden on cmd)
Total bytes of diff: 38649507 (overridden on cmd)
Total bytes of delta: -36524 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
30 : 148249.dasm (3.81 % of base)
30 : 177058.dasm (3.81 % of base)
30 : 192618.dasm (3.81 % of base)
16 : 191691.dasm (3.17 % of base)
2 : 196667.dasm (0.60 % of base)
Top file improvements (bytes):
-407 : 1289.dasm (-8.00 % of base)
-256 : 191889.dasm (-16.10 % of base)
-240 : 191888.dasm (-16.01 % of base)
-224 : 191886.dasm (-15.91 % of base)
-208 : 191884.dasm (-15.79 % of base)
-196 : 15221.dasm (-20.96 % of base)
-193 : 199117.dasm (-29.02 % of base)
-193 : 199121.dasm (-28.09 % of base)
-192 : 191882.dasm (-15.66 % of base)
-189 : 16130.dasm (-20.63 % of base)
-176 : 191880.dasm (-15.51 % of base)
-162 : 15038.dasm (-21.07 % of base)
-162 : 15039.dasm (-20.56 % of base)
-160 : 191878.dasm (-15.33 % of base)
-153 : 14374.dasm (-19.17 % of base)
-148 : 1298.dasm (-9.34 % of base)
-144 : 191876.dasm (-15.11 % of base)
-143 : 194556.dasm (-16.94 % of base)
-140 : 122636.dasm (-11.33 % of base)
-131 : 152275.dasm (-10.31 % of base)
83 total files with Code Size differences (78 improved, 5 regressed), 0 unchanged.
Top method regressions (bytes):
30 (3.81 % of base) : 148249.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
30 (3.81 % of base) : 177058.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
30 (3.81 % of base) : 192618.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
16 (3.17 % of base) : 191691.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)
2 (0.60 % of base) : 196667.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
Top method improvements (bytes):
-407 (-8.00 % of base) : 1289.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-256 (-16.10 % of base) : 191889.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)
-240 (-16.01 % of base) : 191888.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)
-224 (-15.91 % of base) : 191886.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)
-208 (-15.79 % of base) : 191884.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)
-196 (-20.96 % of base) : 15221.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)
-193 (-29.02 % of base) : 199117.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-193 (-28.09 % of base) : 199121.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 (-15.66 % of base) : 191882.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)
-189 (-20.63 % of base) : 16130.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)
-176 (-15.51 % of base) : 191880.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)
-162 (-21.07 % of base) : 15038.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-162 (-20.56 % of base) : 15039.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-160 (-15.33 % of base) : 191878.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)
-153 (-19.17 % of base) : 14374.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)
-148 (-9.34 % of base) : 1298.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-144 (-15.11 % of base) : 191876.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)
-143 (-16.94 % of base) : 194556.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-140 (-11.33 % of base) : 122636.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-131 (-10.31 % of base) : 152275.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.__Canon],ubyte) (FullOpts)
Top method regressions (percentages):
30 (3.81 % of base) : 148249.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
30 (3.81 % of base) : 177058.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
30 (3.81 % of base) : 192618.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
16 (3.17 % of base) : 191691.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)
2 (0.60 % of base) : 196667.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
Top method improvements (percentages):
-129 (-49.43 % of base) : 11471.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-39 (-46.99 % of base) : 224949.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)
-39 (-46.99 % of base) : 201928.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-32 (-45.71 % of base) : 15484.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
-32 (-45.71 % of base) : 15007.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-45.71 % of base) : 1981.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-43.84 % of base) : 122700.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
-32 (-43.84 % of base) : 149322.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-32 (-43.84 % of base) : 178114.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-32 (-43.84 % of base) : 185429.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-74 (-42.53 % of base) : 1280.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
-39 (-42.39 % of base) : 225121.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
-39 (-42.39 % of base) : 29386.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-39 (-41.94 % of base) : 137039.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory+<>c__DisplayClass7_0`1[System.__Canon]:<CreateDefaultConstructor>b__0():System.__Canon:this (FullOpts)
-39 (-41.94 % of base) : 137042.dasm - Newtonsoft.Json.Utilities.LateBoundReflectionDelegateFactory+<>c__DisplayClass5_0`1[System.__Canon]:<CreateDefaultConstructor>b__0():System.__Canon:this (FullOpts)
-39 (-41.49 % of base) : 1926.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<>c__DisplayClass29_0[System.__Canon]:<SetCreateObject>b__0():System.__Canon:this (FullOpts)
-30 (-40.54 % of base) : 2003.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-37 (-40.22 % of base) : 204379.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-39 (-40.21 % of base) : 11529.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:CompareTo(System.Object):int:this (FullOpts)
-39 (-40.21 % of base) : 11485.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object):int:this (FullOpts)
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 43258364 (overridden on cmd)
Total bytes of diff: 43247752 (overridden on cmd)
Total bytes of delta: -10612 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
70 : 125840.dasm (3.20 % of base)
34 : 119001.dasm (1.94 % of base)
18 : 276341.dasm (1.72 % of base)
14 : 276655.dasm (1.91 % of base)
8 : 145750.dasm (0.90 % of base)
8 : 29874.dasm (2.29 % of base)
8 : 145740.dasm (0.24 % of base)
8 : 233790.dasm (3.12 % of base)
7 : 30947.dasm (0.33 % of base)
5 : 213565.dasm (5.43 % of base)
5 : 233793.dasm (2.58 % of base)
4 : 292219.dasm (2.40 % of base)
4 : 237658.dasm (3.42 % of base)
4 : 60720.dasm (3.42 % of base)
4 : 244026.dasm (3.64 % of base)
4 : 223643.dasm (3.42 % of base)
3 : 233787.dasm (0.98 % of base)
3 : 211126.dasm (0.63 % of base)
3 : 239964.dasm (0.75 % of base)
3 : 258169.dasm (3.00 % of base)
Top file improvements (bytes):
-425 : 224215.dasm (-22.57 % of base)
-148 : 282992.dasm (-25.65 % of base)
-143 : 103909.dasm (-12.45 % of base)
-142 : 246553.dasm (-10.09 % of base)
-126 : 169397.dasm (-38.07 % of base)
-115 : 168752.dasm (-8.20 % of base)
-84 : 15545.dasm (-12.79 % of base)
-84 : 15538.dasm (-13.19 % of base)
-58 : 38997.dasm (-1.45 % of base)
-57 : 26243.dasm (-7.56 % of base)
-55 : 222439.dasm (-0.85 % of base)
-54 : 15702.dasm (-10.78 % of base)
-54 : 15711.dasm (-10.65 % of base)
-51 : 134496.dasm (-13.42 % of base)
-45 : 169343.dasm (-14.75 % of base)
-45 : 168530.dasm (-4.63 % of base)
-44 : 30814.dasm (-5.12 % of base)
-44 : 29576.dasm (-7.53 % of base)
-42 : 169318.dasm (-27.45 % of base)
-42 : 278263.dasm (-12.73 % of base)
71 total files with Code Size differences (48 improved, 23 regressed), 18 unchanged.
Top method regressions (bytes):
70 (3.20 % of base) : 125840.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
34 (1.94 % of base) : 119001.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
18 (1.72 % of base) : 276341.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
14 (1.91 % of base) : 276655.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
8 (0.90 % of base) : 145750.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:GetDeletedSynthesizedMethods(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLambdaInfo]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CodeGen.DebugId,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal]]:this (FullOpts)
8 (0.24 % of base) : 145740.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
8 (3.12 % of base) : 233790.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
8 (2.29 % of base) : 29874.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
7 (0.33 % of base) : 30947.dasm - System.Data.DataSet:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
5 (2.58 % of base) : 233793.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
5 (5.43 % of base) : 213565.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (3.64 % of base) : 244026.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
4 (2.40 % of base) : 292219.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
4 (3.42 % of base) : 223643.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
4 (3.42 % of base) : 237658.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
4 (3.42 % of base) : 60720.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
3 (0.75 % of base) : 239964.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
3 (0.98 % of base) : 233787.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
3 (3.00 % of base) : 258169.dasm - System.ComponentModel.BindingList`1[System.__Canon]:System.ComponentModel.IBindingList.AddNew():System.Object:this (FullOpts)
3 (0.63 % of base) : 211126.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
Top method improvements (bytes):
-425 (-22.57 % of base) : 224215.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-148 (-25.65 % of base) : 282992.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-143 (-12.45 % of base) : 103909.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-142 (-10.09 % of base) : 246553.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-126 (-38.07 % of base) : 169397.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-115 (-8.20 % of base) : 168752.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-84 (-13.19 % of base) : 15538.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-84 (-12.79 % of base) : 15545.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-58 (-1.45 % of base) : 38997.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-57 (-7.56 % of base) : 26243.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-55 (-0.85 % of base) : 222439.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GenerateInterfaceViewProxyType(System.Type):System.Type (FullOpts)
-54 (-10.65 % of base) : 15711.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-54 (-10.78 % of base) : 15702.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-51 (-13.42 % of base) : 134496.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-45 (-4.63 % of base) : 168530.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (FullOpts)
-45 (-14.75 % of base) : 169343.dasm - System.Xml.Serialization.XmlSchemaImporter:ImportAttributeGroupMembers(System.Xml.Schema.XmlSchemaAttributeGroup,System.String,System.Xml.Serialization.CodeIdentifiers,System.Xml.Serialization.CodeIdentifiers,System.String):this (FullOpts)
-44 (-5.12 % of base) : 30814.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
-44 (-7.53 % of base) : 29576.dasm - System.Data.XDRSchema:HandleTypeNode(System.Xml.XmlElement,System.Data.DataTable,System.Collections.ArrayList):this (FullOpts)
-42 (-12.73 % of base) : 278263.dasm - System.Reflection.Context.Custom.CustomParameterInfo:GetCustomAttributes(ubyte):System.Object[]:this (FullOpts)
-42 (-27.45 % of base) : 169318.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
Top method regressions (percentages):
5 (5.43 % of base) : 213565.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (3.64 % of base) : 244026.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)
4 (3.42 % of base) : 223643.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
4 (3.42 % of base) : 237658.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
4 (3.42 % of base) : 60720.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
70 (3.20 % of base) : 125840.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
8 (3.12 % of base) : 233790.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
3 (3.00 % of base) : 258169.dasm - System.ComponentModel.BindingList`1[System.__Canon]:System.ComponentModel.IBindingList.AddNew():System.Object:this (FullOpts)
5 (2.58 % of base) : 233793.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
4 (2.40 % of base) : 292219.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
8 (2.29 % of base) : 29874.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
34 (1.94 % of base) : 119001.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
14 (1.91 % of base) : 276655.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
2 (1.79 % of base) : 244028.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.Object):this (FullOpts)
18 (1.72 % of base) : 276341.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
2 (1.54 % of base) : 264585.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration,System.Action`1[Microsoft.Extensions.Configuration.BinderOptions]):System.__Canon (FullOpts)
2 (1.48 % of base) : 244015.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Item(System.Object):System.Object:this (FullOpts)
3 (0.98 % of base) : 233787.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
8 (0.90 % of base) : 145750.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:GetDeletedSynthesizedMethods(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLambdaInfo]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CodeGen.DebugId,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal]]:this (FullOpts)
3 (0.75 % of base) : 239964.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
Top method improvements (percentages):
-23 (-50.00 % of base) : 15259.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-50.00 % of base) : 36245.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-42.37 % of base) : 34794.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-35 (-38.89 % of base) : 235310.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-126 (-38.07 % of base) : 169397.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-35 (-36.84 % of base) : 247512.dasm - Microsoft.VisualBasic.Conversion:CTypeDynamic[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-35.29 % of base) : 60597.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-35.29 % of base) : 60611.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-32.79 % of base) : 135296.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-20 (-32.79 % of base) : 188972.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-16 (-29.63 % of base) : 274929.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)
-18 (-29.51 % of base) : 269032.dasm - System.Net.Dns:GetHostAddressesCore(System.Net.IPAddress,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
-18 (-29.51 % of base) : 269029.dasm - System.Net.Dns:GetHostAddressesCore(System.String,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
-23 (-29.49 % of base) : 280272.dasm - FastSerialization.Deserializer:GetEntryObject[System.__Canon](byref):this (FullOpts)
-28 (-28.87 % of base) : 268332.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
-28 (-28.87 % of base) : 232678.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-28 (-28.87 % of base) : 235318.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
-25 (-28.74 % of base) : 156973.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-25 (-28.74 % of base) : 156997.dasm - System.Xml.BinHexDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-25 (-28.74 % of base) : 157955.dasm - System.Xml.IncrementalReadCharsDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 286247742 (overridden on cmd)
Total bytes of diff: 286216307 (overridden on cmd)
Total bytes of delta: -31435 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
250 : 463900.dasm (4.66 % of base)
114 : 299421.dasm (3.41 % of base)
54 : 395016.dasm (5.88 % of base)
51 : 695326.dasm (3.17 % of base)
49 : 699689.dasm (3.81 % of base)
38 : 114792.dasm (6.82 % of base)
36 : 182362.dasm (6.56 % of base)
36 : 715556.dasm (6.56 % of base)
34 : 692054.dasm (3.61 % of base)
33 : 289664.dasm (15.64 % of base)
32 : 68272.dasm (2.17 % of base)
30 : 378594.dasm (0.26 % of base)
29 : 468341.dasm (6.08 % of base)
28 : 54510.dasm (1.11 % of base)
28 : 703886.dasm (1.23 % of base)
27 : 538909.dasm (1.30 % of base)
27 : 189725.dasm (0.66 % of base)
26 : 231501.dasm (0.94 % of base)
25 : 66831.dasm (0.83 % of base)
25 : 240470.dasm (2.23 % of base)
Top file improvements (bytes):
-328 : 641278.dasm (-3.74 % of base)
-184 : 239349.dasm (-5.04 % of base)
-144 : 746250.dasm (-3.76 % of base)
-144 : 454611.dasm (-3.74 % of base)
-137 : 347450.dasm (-4.02 % of base)
-127 : 184754.dasm (-3.30 % of base)
-122 : 416600.dasm (-2.86 % of base)
-115 : 638199.dasm (-1.23 % of base)
-109 : 684140.dasm (-1.80 % of base)
-101 : 682593.dasm (-1.67 % of base)
-99 : 640969.dasm (-1.13 % of base)
-94 : 536018.dasm (-2.42 % of base)
-94 : 458653.dasm (-2.42 % of base)
-89 : 332235.dasm (-2.18 % of base)
-87 : 349545.dasm (-2.21 % of base)
-87 : 659203.dasm (-2.41 % of base)
-86 : 460894.dasm (-3.13 % of base)
-84 : 194851.dasm (-2.17 % of base)
-84 : 520655.dasm (-2.17 % of base)
-83 : 611241.dasm (-2.10 % of base)
83 total files with Code Size differences (54 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
250 (4.66 % of base) : 463900.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Tier1)
114 (3.41 % of base) : 299421.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitUnliftedBinaryOp(int,System.Type,System.Type):this (Tier1)
54 (5.88 % of base) : 395016.dasm - System.Text.RegularExpressions.RegexParser:NoteCaptureName(System.String,int):this (Tier1)
51 (3.17 % of base) : 695326.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DoSecondPhase(Microsoft.CodeAnalysis.CSharp.Binder,byref):int:this (Tier1)
49 (3.81 % of base) : 699689.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,byref):this (Tier1)
38 (6.82 % of base) : 114792.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
36 (6.56 % of base) : 182362.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
36 (6.56 % of base) : 715556.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
34 (3.61 % of base) : 692054.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:MergeUseSiteInfo(byref,Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (Tier1)
33 (15.64 % of base) : 289664.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
32 (2.17 % of base) : 68272.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,byref):this (Tier1)
30 (0.26 % of base) : 378594.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
29 (6.08 % of base) : 468341.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
28 (1.11 % of base) : 54510.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
28 (1.23 % of base) : 703886.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
27 (0.66 % of base) : 189725.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasAnyBaseInterfaceConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):ubyte:this (Tier1)
27 (1.30 % of base) : 538909.dasm - System.Runtime.Serialization.Tests.DataContractSerializerHelper:RoundTripBinarySerialization[System.__Canon](System.__Canon,System.Runtime.Serialization.DataContractSerializerSettings,System.Func`1[System.Runtime.Serialization.DataContractSerializer]):System.__Canon (Tier1)
26 (0.94 % of base) : 231501.dasm - System.Collections.Tests.Helpers:PerformActionOnAllSortedListWrappers(System.Collections.SortedList,System.Action`1[System.Collections.SortedList]) (Tier1)
25 (0.93 % of base) : 94828.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
25 (0.83 % of base) : 66831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:DeriveUseSiteDiagnosticFromTypeArguments(byref):ubyte:this (Tier1)
Top method improvements (bytes):
-328 (-3.74 % of base) : 641278.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArguments(byref,byref,System.Text.Json.JsonSerializerOptions):this (Tier1)
-184 (-5.04 % of base) : 239349.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-144 (-3.76 % of base) : 746250.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-144 (-3.74 % of base) : 454611.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-137 (-4.02 % of base) : 347450.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-127 (-3.30 % of base) : 184754.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-122 (-2.86 % of base) : 416600.dasm - System.Net.Http.HttpConnection:ParseHeadersCore(System.Span`1[ubyte],System.Net.Http.HttpResponseMessage,ubyte):System.ValueTuple`2[ubyte,int]:this (Tier1)
-115 (-1.23 % of base) : 638199.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-109 (-1.80 % of base) : 684140.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.GenericStructIDictionaryWrapper`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-101 (-1.67 % of base) : 682593.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-99 (-1.13 % of base) : 640969.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-94 (-2.42 % of base) : 536018.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-94 (-2.42 % of base) : 458653.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-89 (-2.18 % of base) : 332235.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-87 (-2.41 % of base) : 659203.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 (Tier1)
-87 (-2.21 % of base) : 349545.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-86 (-3.13 % of base) : 460894.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
-84 (-2.17 % of base) : 194851.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-84 (-2.17 % of base) : 520655.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-83 (-2.10 % of base) : 611241.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method regressions (percentages):
33 (15.64 % of base) : 289664.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
13 (10.83 % of base) : 490865.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
38 (6.82 % of base) : 114792.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
36 (6.56 % of base) : 182362.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
36 (6.56 % of base) : 715556.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
29 (6.08 % of base) : 468341.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
54 (5.88 % of base) : 395016.dasm - System.Text.RegularExpressions.RegexParser:NoteCaptureName(System.String,int):this (Tier1)
15 (5.58 % of base) : 418229.dasm - System.Threading.CancellationTokenSource:Invoke(System.Delegate,System.Object,System.Threading.CancellationTokenSource) (Tier1)
10 (5.43 % of base) : 481954.dasm - System.Xml.Schema.Compiler:GetSimpleType(System.Xml.XmlQualifiedName):System.Xml.Schema.XmlSchemaSimpleType:this (Tier1)
250 (4.66 % of base) : 463900.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Tier1)
19 (4.26 % of base) : 747366.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+<>c:<CompleteTaskAsync>b__30_0(System.Object):this (Tier1)
8 (4.00 % of base) : 749253.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAnyImpl>b__66_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
7 (3.95 % of base) : 424443.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (Tier1)
49 (3.81 % of base) : 699689.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,byref):this (Tier1)
34 (3.61 % of base) : 692054.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:MergeUseSiteInfo(byref,Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (Tier1)
114 (3.41 % of base) : 299421.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitUnliftedBinaryOp(int,System.Type,System.Type):this (Tier1)
51 (3.17 % of base) : 695326.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DoSecondPhase(Microsoft.CodeAnalysis.CSharp.Binder,byref):int:this (Tier1)
4 (2.40 % of base) : 138740.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (Tier1)
25 (2.23 % of base) : 240470.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (Tier1)
10 (2.20 % of base) : 359465.dasm - System.Threading.ManualResetEventSlim:CancellationTokenCallback(System.Object) (Tier1)
Top method improvements (percentages):
-23 (-50.00 % of base) : 662833.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-23 (-50.00 % of base) : 641668.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-45.90 % of base) : 60930.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-28 (-36.36 % of base) : 1416.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-30 (-35.29 % of base) : 129990.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-30 (-35.29 % of base) : 129420.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-34.15 % of base) : 708819.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-34 (-34.00 % of base) : 609836.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-34 (-31.19 % of base) : 129237.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-25 (-30.12 % of base) : 647682.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-25 (-30.12 % of base) : 647819.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-25 (-30.12 % of base) : 648640.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-21 (-29.58 % of base) : 138380.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-38 (-29.23 % of base) : 465718.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
-28 (-28.87 % of base) : 130334.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-28 (-28.57 % of base) : 45385.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-28 (-28.57 % of base) : 107945.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo,ubyte):System.__Canon (Tier1)
-19 (-27.94 % of base) : 348768.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
-56 (-26.92 % of base) : 189427.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-21 (-26.25 % of base) : 61430.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 103979238 (overridden on cmd)
Total bytes of diff: 103963887 (overridden on cmd)
Total bytes of delta: -15351 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
181 : 223723.dasm (11.13 % of base)
50 : 180779.dasm (2.97 % of base)
49 : 145462.dasm (12.28 % of base)
36 : 93557.dasm (128.57 % of base)
30 : 93540.dasm (55.56 % of base)
30 : 95144.dasm (55.56 % of base)
23 : 93157.dasm (1.10 % of base)
18 : 78954.dasm (1.77 % of base)
14 : 4017.dasm (1.94 % of base)
10 : 37998.dasm (3.13 % of base)
9 : 180836.dasm (4.17 % of base)
6 : 10772.dasm (0.55 % of base)
6 : 45039.dasm (0.55 % of base)
6 : 50778.dasm (0.55 % of base)
6 : 68334.dasm (1.33 % of base)
5 : 91170.dasm (29.41 % of base)
5 : 37641.dasm (2.08 % of base)
5 : 98074.dasm (5.43 % of base)
4 : 13831.dasm (1.47 % of base)
4 : 38379.dasm (2.40 % of base)
Top file improvements (bytes):
-425 : 64243.dasm (-22.57 % of base)
-384 : 204924.dasm (-7.72 % of base)
-267 : 205099.dasm (-16.26 % of base)
-238 : 166595.dasm (-13.51 % of base)
-229 : 166589.dasm (-13.25 % of base)
-224 : 303214.dasm (-4.22 % of base)
-223 : 14233.dasm (-16.72 % of base)
-215 : 165713.dasm (-10.68 % of base)
-189 : 205117.dasm (-12.92 % of base)
-146 : 166591.dasm (-11.31 % of base)
-116 : 195451.dasm (-7.63 % of base)
-116 : 194083.dasm (-7.63 % of base)
-114 : 166587.dasm (-6.59 % of base)
-105 : 64172.dasm (-11.86 % of base)
-98 : 198201.dasm (-7.85 % of base)
-98 : 166592.dasm (-7.85 % of base)
-95 : 23378.dasm (-3.85 % of base)
-90 : 166206.dasm (-6.71 % of base)
-85 : 166594.dasm (-9.19 % of base)
-80 : 171083.dasm (-10.57 % of base)
74 total files with Code Size differences (50 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
181 (11.13 % of base) : 223723.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
50 (2.97 % of base) : 180779.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
49 (12.28 % of base) : 145462.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
36 (128.57 % of base) : 93557.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
30 (55.56 % of base) : 93540.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
30 (55.56 % of base) : 95144.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
23 (1.10 % of base) : 93157.dasm - System.Data.DataSet:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
18 (1.77 % of base) : 78954.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
14 (1.94 % of base) : 4017.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
10 (3.13 % of base) : 37998.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
9 (4.17 % of base) : 180836.dasm - System.Reflection.Tests.GetCustomAttributes_Assembly+<>c__DisplayClass4_0:<GetCustomAttributeOfT>b__0():this (FullOpts)
6 (0.55 % of base) : 10772.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)
6 (0.55 % of base) : 45039.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)
6 (0.55 % of base) : 50778.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)
6 (1.33 % of base) : 68334.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
5 (2.08 % of base) : 37641.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
5 (29.41 % of base) : 91170.dasm - MonoTests.System.Configuration.KeyValueConfigurationCollectionTest+<>c__DisplayClass9_0:<GetElementKey_null>b__0():System.Object:this (FullOpts)
5 (5.43 % of base) : 98074.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (1.47 % of base) : 13831.dasm - Microsoft.CodeAnalysis.AddImport.AbstractAddImportsService`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetImportContainer(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.AddImport.AddImportPlacementOptions):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
4 (2.40 % of base) : 38379.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
Top method improvements (bytes):
-425 (-22.57 % of base) : 64243.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-384 (-7.72 % of base) : 204924.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)
-267 (-16.26 % of base) : 205099.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)
-238 (-13.51 % of base) : 166595.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-229 (-13.25 % of base) : 166589.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-224 (-4.22 % of base) : 303214.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)
-223 (-16.72 % of base) : 14233.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)
-215 (-10.68 % of base) : 165713.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-189 (-12.92 % of base) : 205117.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-146 (-11.31 % of base) : 166591.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-116 (-7.63 % of base) : 195451.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-116 (-7.63 % of base) : 194083.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-114 (-6.59 % of base) : 166587.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-105 (-11.86 % of base) : 64172.dasm - System.CodeDom.Compiler.Tests.CodeGenerationTests:GenerateCode(System.CodeDom.CodeObject,System.CodeDom.Compiler.CodeDomProvider):System.String (FullOpts)
-98 (-7.85 % of base) : 166592.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-98 (-7.85 % of base) : 198201.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-95 (-3.85 % of base) : 23378.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
-90 (-6.71 % of base) : 166206.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-85 (-9.19 % of base) : 166594.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (FullOpts)
-80 (-10.57 % of base) : 171083.dasm - System.Xml.XslCompiledTransformApiTests.CSameInstanceXsltArgumentListGetParam:GetParam2(System.Object):int:this (FullOpts)
Top method regressions (percentages):
36 (128.57 % of base) : 93557.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
30 (55.56 % of base) : 93540.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
30 (55.56 % of base) : 95144.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
5 (29.41 % of base) : 91170.dasm - MonoTests.System.Configuration.KeyValueConfigurationCollectionTest+<>c__DisplayClass9_0:<GetElementKey_null>b__0():System.Object:this (FullOpts)
49 (12.28 % of base) : 145462.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
181 (11.13 % of base) : 223723.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
3 (5.88 % of base) : 34465.dasm - Stashbox.Registration.Fluent.BaseFluentConfigurator`1[System.__Canon]:WithLifetime(Stashbox.Lifetime.LifetimeDescriptor):System.__Canon:this (FullOpts)
5 (5.43 % of base) : 98074.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
9 (4.17 % of base) : 180836.dasm - System.Reflection.Tests.GetCustomAttributes_Assembly+<>c__DisplayClass4_0:<GetCustomAttributeOfT>b__0():this (FullOpts)
4 (3.42 % of base) : 82192.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
10 (3.13 % of base) : 37998.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
3 (3.00 % of base) : 86522.dasm - System.ComponentModel.BindingList`1[System.__Canon]:System.ComponentModel.IBindingList.AddNew():System.Object:this (FullOpts)
50 (2.97 % of base) : 180779.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
4 (2.40 % of base) : 38379.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
5 (2.08 % of base) : 37641.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
14 (1.94 % of base) : 4017.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
18 (1.77 % of base) : 78954.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
2 (1.54 % of base) : 29877.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration,System.Action`1[Microsoft.Extensions.Configuration.BinderOptions]):System.__Canon (FullOpts)
4 (1.47 % of base) : 13831.dasm - Microsoft.CodeAnalysis.AddImport.AbstractAddImportsService`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetImportContainer(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.AddImport.AddImportPlacementOptions):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
6 (1.33 % of base) : 68334.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.LengthBucketsFrozenSet+GSW]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
Top method improvements (percentages):
-23 (-50.00 % of base) : 34886.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-50.00 % of base) : 142275.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-23 (-46.94 % of base) : 30463.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)
-35 (-38.89 % of base) : 21350.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-30 (-35.29 % of base) : 78077.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-35.29 % of base) : 126938.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-26 (-30.95 % of base) : 146376.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-17 (-30.36 % of base) : 300838.dasm - System.Threading.Tasks.Tests.TaskRunSyncTest:DisposeScheduler(System.Threading.Tasks.TaskScheduler) (FullOpts)
-23 (-30.26 % of base) : 98416.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.__Canon,System.__Canon]:Fetch(System.Object):System.Object:this (FullOpts)
-25 (-30.12 % of base) : 237523.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (FullOpts)
-25 (-30.12 % of base) : 238217.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (FullOpts)
-16 (-29.63 % of base) : 89524.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)
-38 (-29.23 % of base) : 61582.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-16 (-29.09 % of base) : 133834.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
-25 (-28.74 % of base) : 62031.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-25 (-28.74 % of base) : 62023.dasm - System.Xml.BinHexDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-25 (-28.74 % of base) : 173976.dasm - System.Xml.IncrementalReadCharsDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-28 (-28.00 % of base) : 35253.dasm - Grace.DependencyInjection.Impl.BaseExportLocatorScope:Locate[System.__Canon]():System.__Canon:this (FullOpts)
-19 (-27.94 % of base) : 99710.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-16 (-27.59 % of base) : 48018.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9031108 (overridden on cmd)
Total bytes of diff: 9028915 (overridden on cmd)
Total bytes of delta: -2193 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
14 : 32291.dasm (3.35 % of base)
6 : 21123.dasm (0.55 % of base)
3 : 29649.dasm (0.76 % of base)
2 : 8843.dasm (1.05 % of base)
Top file improvements (bytes):
-55 : 32079.dasm (-15.80 % of base)
-52 : 31719.dasm (-25.00 % of base)
-52 : 33016.dasm (-19.62 % of base)
-43 : 30099.dasm (-8.94 % of base)
-42 : 27880.dasm (-6.29 % of base)
-41 : 8721.dasm (-29.08 % of base)
-40 : 5034.dasm (-3.02 % of base)
-40 : 7629.dasm (-7.09 % of base)
-39 : 31694.dasm (-2.26 % of base)
-36 : 16552.dasm (-5.87 % of base)
-36 : 15202.dasm (-8.26 % of base)
-31 : 31689.dasm (-18.67 % of base)
-31 : 8363.dasm (-11.36 % of base)
-29 : 20234.dasm (-11.07 % of base)
-28 : 25205.dasm (-2.94 % of base)
-28 : 412.dasm (-36.36 % of base)
-26 : 16993.dasm (-14.53 % of base)
-26 : 28450.dasm (-6.47 % of base)
-25 : 32776.dasm (-11.52 % of base)
-25 : 7499.dasm (-4.75 % of base)
60 total files with Code Size differences (56 improved, 4 regressed), 5 unchanged.
Top method regressions (bytes):
14 (3.35 % of base) : 32291.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
6 (0.55 % of base) : 21123.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)
3 (0.76 % of base) : 29649.dasm - System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:Clone():System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:this (FullOpts)
2 (1.05 % of base) : 8843.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
Top method improvements (bytes):
-55 (-15.80 % of base) : 32079.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 (-25.00 % of base) : 31719.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-52 (-19.62 % of base) : 33016.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-43 (-8.94 % of base) : 30099.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)
-42 (-6.29 % of base) : 27880.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)
-41 (-29.08 % of base) : 8721.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-40 (-7.09 % of base) : 7629.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)
-40 (-3.02 % of base) : 5034.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)
-39 (-2.26 % of base) : 31694.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)
-36 (-5.87 % of base) : 16552.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-36 (-8.26 % of base) : 15202.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
-31 (-11.36 % of base) : 8363.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
-31 (-18.67 % of base) : 31689.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-29 (-11.07 % of base) : 20234.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-28 (-2.94 % of base) : 25205.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-28 (-36.36 % of base) : 412.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-26 (-14.53 % of base) : 16993.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-6.47 % of base) : 28450.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-25 (-4.75 % of base) : 7499.dasm - FSharp.Compiler.ParseAndCheckInputs:GetScopedPragmasForHashDirective(FSharp.Compiler.Syntax.ParsedHashDirective):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma] (FullOpts)
-25 (-11.52 % of base) : 32776.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
14 (3.35 % of base) : 32291.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
2 (1.05 % of base) : 8843.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
3 (0.76 % of base) : 29649.dasm - System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:Clone():System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:this (FullOpts)
6 (0.55 % of base) : 21123.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 improvements (percentages):
-28 (-36.36 % of base) : 412.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-16 (-29.63 % of base) : 32865.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-41 (-29.08 % of base) : 8721.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-25 (-26.60 % of base) : 16406.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-18 (-25.35 % of base) : 29987.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-52 (-25.00 % of base) : 31719.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-18 (-24.32 % of base) : 17292.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-23 (-23.47 % of base) : 9707.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
-16 (-21.05 % of base) : 11345.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
-52 (-19.62 % of base) : 33016.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-31 (-18.67 % of base) : 31689.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-18.35 % of base) : 4619.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)
-20 (-17.39 % of base) : 9817.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-18 (-17.31 % of base) : 22523.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-20 (-16.53 % of base) : 10822.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-55 (-15.80 % of base) : 32079.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)
-20 (-15.15 % of base) : 6061.dasm - FSharp.Compiler.AbstractIL.IL+ILResource:GetBytes():FSharp.Compiler.IO.ReadOnlyByteMemory:this (FullOpts)
-26 (-14.53 % of base) : 16993.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-14 (-14.43 % of base) : 16943.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-16 (-14.29 % of base) : 32106.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
smoke_tests.nativeaot.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3808639 (overridden on cmd)
Total bytes of diff: 3806382 (overridden on cmd)
Total bytes of delta: -2257 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1 : 12364.dasm (0.20 % of base)
Top file improvements (bytes):
-60 : 21052.dasm (-18.93 % of base)
-60 : 24872.dasm (-18.93 % of base)
-60 : 268.dasm (-18.93 % of base)
-60 : 3020.dasm (-18.93 % of base)
-56 : 3334.dasm (-23.73 % of base)
-56 : 3336.dasm (-23.93 % of base)
-56 : 21332.dasm (-23.73 % of base)
-56 : 25149.dasm (-23.73 % of base)
-56 : 544.dasm (-23.73 % of base)
-34 : 7761.dasm (-12.01 % of base)
-32 : 23670.dasm (-10.13 % of base)
-28 : 7835.dasm (-12.67 % of base)
-26 : 12091.dasm (-11.21 % of base)
-25 : 25264.dasm (-11.96 % of base)
-25 : 21447.dasm (-11.96 % of base)
-25 : 3461.dasm (-11.96 % of base)
-25 : 667.dasm (-11.96 % of base)
-24 : 5740.dasm (-12.90 % of base)
-23 : 16748.dasm (-17.69 % of base)
-21 : 19596.dasm (-33.33 % of base)
69 total files with Code Size differences (68 improved, 1 regressed), 4 unchanged.
Top method regressions (bytes):
1 (0.20 % of base) : 12364.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-60 (-18.93 % of base) : 21052.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-18.93 % of base) : 24872.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-18.93 % of base) : 268.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-18.93 % of base) : 3020.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-56 (-23.93 % of base) : 3336.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,System.__Canon,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,System.__Canon,int):int:this (FullOpts)
-56 (-23.73 % of base) : 3334.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-56 (-23.73 % of base) : 21332.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-56 (-23.73 % of base) : 25149.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-56 (-23.73 % of base) : 544.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-34 (-12.01 % of base) : 7761.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-32 (-10.13 % of base) : 23670.dasm - PInvokeTests.Program+Delegate_Int_AggressiveInlining:InvokeMulticastThunk(int,int,int,int,int,int,int,int,int,int):int:this (FullOpts)
-28 (-12.67 % of base) : 7835.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-26 (-11.21 % of base) : 12091.dasm - System.Reflection.AssemblyName:Clone():System.Object:this (FullOpts)
-25 (-11.96 % of base) : 25264.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-25 (-11.96 % of base) : 21447.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-25 (-11.96 % of base) : 3461.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-25 (-11.96 % of base) : 667.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-24 (-12.90 % of base) : 5740.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-23 (-17.69 % of base) : 16748.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-21 (-33.33 % of base) : 19596.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
Top method regressions (percentages):
1 (0.20 % of base) : 12364.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
-21 (-33.33 % of base) : 19596.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-21 (-33.33 % of base) : 20476.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-19 (-29.69 % of base) : 7100.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
-16 (-27.12 % of base) : 13949.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-16 (-25.40 % of base) : 8635.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
-56 (-23.93 % of base) : 3336.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,System.__Canon,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,System.__Canon,int):int:this (FullOpts)
-56 (-23.73 % of base) : 3334.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-56 (-23.73 % of base) : 21332.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-56 (-23.73 % of base) : 25149.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-56 (-23.73 % of base) : 544.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-18 (-21.18 % of base) : 12471.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-60 (-18.93 % of base) : 21052.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-18.93 % of base) : 24872.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-18.93 % of base) : 268.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-18.93 % of base) : 3020.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-18 (-18.75 % of base) : 12475.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-18 (-18.18 % of base) : 12472.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
-18 (-17.82 % of base) : 12478.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
-18 (-17.82 % of base) : 12477.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
-23 (-17.69 % of base) : 16748.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
osx arm64
Diffs are based on 2,118,388 contexts (927,360 MinOpts, 1,191,028 FullOpts).
MISSED contexts: base: 6,095 (0.27%), diff: 117,629 (5.26%)
Overall (-114,776 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
31,783,628 |
-7,156 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
15,053,964 |
-440 |
| coreclr_tests.run.osx.arm64.checked.mch |
453,139,932 |
-3,648 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,655,940 |
-38,384 |
| libraries.pmi.osx.arm64.checked.mch |
59,082,992 |
-18,192 |
| libraries_tests.run.osx.arm64.Release.mch |
273,947,472 |
-21,164 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
128,186,724 |
-22,712 |
| realworld.run.osx.arm64.checked.mch |
10,406,056 |
-3,080 |
FullOpts (-114,776 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
15,376,280 |
-7,156 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
3,554,716 |
-440 |
| coreclr_tests.run.osx.arm64.checked.mch |
121,846,980 |
-3,648 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,654,312 |
-38,384 |
| libraries.pmi.osx.arm64.checked.mch |
58,961,864 |
-18,192 |
| libraries_tests.run.osx.arm64.Release.mch |
72,628,288 |
-21,164 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
115,050,200 |
-22,712 |
| realworld.run.osx.arm64.checked.mch |
9,842,100 |
-3,080 |
Example diffs
benchmarks.run_pgo.osx.arm64.checked.mch
-28 (-28.00%) : 18931.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 56661.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)
@@ -8,22 +8,19 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
-; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref
-; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg"
-; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg"
+; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov x1, x0
; gcrRegs +[x1]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M44215_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M44215_IG08
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00
+G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -104,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-13.64%) : 64285.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbolSystem.__Canon:System.__Canon (Tier1)
@@ -9,14 +9,12 @@
; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 4, 3.50) long -> x20 single-def
-; V01 arg0 [V01,T01] ( 8, 4.99) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x20 single-def
+; V01 arg0 [V01,T00] ( 8, 4.99) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 4, 2.25) ref -> x1
-; V04 tmp2 [V04,T03] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T05] ( 3, 0 ) byref -> x21 single-def "non-inline candidate call"
-; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.ISymbol>
+; V03 tmp1 [V03,T02] ( 3, 2 ) ref -> x1
+; V04 tmp2 [V04,T03] ( 3, 0 ) byref -> x21 single-def "non-inline candidate call"
+; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.ISymbol>
;
; Lcl frame size = 8
@@ -31,50 +29,38 @@ G_M28349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=28 bbWeight=1 PerfScore 5.50
G_M28349_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M28349_IG09
+ cbz x19, G_M28349_IG07
;; size=4 bbWeight=1 PerfScore 1.00
G_M28349_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- cbz x1, G_M28349_IG10
+ cbz x1, G_M28349_IG08
;; size=8 bbWeight=0.99 PerfScore 3.98
G_M28349_IG04: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
;; size=4 bbWeight=0.99 PerfScore 2.98
-G_M28349_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M28349_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M28349_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28349_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x20, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M28349_IG08
- ;; size=20 bbWeight=0.50 PerfScore 5.25
-G_M28349_IG07: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x20, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M28349_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M28349_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M28349_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M28349_IG07: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov x1, xzr
; gcrRegs +[x1]
b G_M28349_IG05
;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M28349_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M28349_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1] +[x19]
add x21, x19, #8
; byrRegs +[x21]
@@ -86,7 +72,7 @@ G_M28349_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbnz x21, G_M28349_IG11
+ cbnz x21, G_M28349_IG09
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -97,7 +83,7 @@ G_M28349_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x21]
brk_unix #0
;; size=56 bbWeight=0 PerfScore 0.00
-G_M28349_IG11: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=200000 {x21}, byref
+G_M28349_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x1 x19]
; byrRegs +[x21]
mov x0, x21
@@ -109,7 +95,7 @@ G_M28349_IG11: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=200000 {
b G_M28349_IG04
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 20, PerfScore 25.59, instruction count 44, allocated bytes for code 176 (MethodHash=bb679142) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
+; Total bytes of code 152, prolog size 20, PerfScore 25.47, instruction count 38, allocated bytes for code 152 (MethodHash=bb679142) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -120,7 +106,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+2.35%) : 76226.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
@@ -11,43 +11,43 @@
;
; V00 this [V00,T00] ( 19, 16.91) ref -> x19 this class-hnd single-def <System.Reflection.Emit.DynamicMethod>
; V01 arg1 [V01,T14] ( 4, 4 ) ref -> x24 class-hnd single-def <System.String>
-; V02 arg2 [V02,T18] ( 3, 3 ) int -> x2 single-def
-; V03 arg3 [V03,T19] ( 3, 3 ) int -> x3 single-def
-; V04 arg4 [V04,T11] ( 7, 4.34) ref -> x22 class-hnd single-def <System.Type>
-; V05 arg5 [V05,T09] ( 5, 5.97) ref -> x21 class-hnd single-def <System.Type[]>
-; V06 arg6 [V06,T08] ( 10, 6.97) ref -> x20 class-hnd single-def <System.Type>
+; V02 arg2 [V02,T19] ( 3, 3 ) int -> x2 single-def
+; V03 arg3 [V03,T20] ( 3, 3 ) int -> x3 single-def
+; V04 arg4 [V04,T12] ( 7, 4.34) ref -> x22 class-hnd single-def <System.Type>
+; V05 arg5 [V05,T08] ( 5, 5.97) ref -> x21 class-hnd single-def <System.Type[]>
+; V06 arg6 [V06,T06] ( 10, 6.97) ref -> x20 class-hnd single-def <System.Type>
; V07 arg7 [V07,T13] ( 7, 4.02) ref -> x23 class-hnd single-def <System.Reflection.Module>
-; V08 arg8 [V08,T41] ( 2, 1 ) ubyte -> [fp+0x70] single-def
-; V09 arg9 [V09,T42] ( 1, 1 ) ubyte -> [fp+0x71] single-def
+; V08 arg8 [V08,T43] ( 2, 1 ) ubyte -> [fp+0x60] single-def
+; V09 arg9 [V09,T44] ( 1, 1 ) ubyte -> [fp+0x61] single-def
; V10 loc0 [V10,T02] ( 7, 12.79) int -> x26
-; V11 loc1 [V11,T07] ( 10, 9.43) ref -> x20 class-hnd exact <System.RuntimeType>
+; V11 loc1 [V11,T07] ( 9, 8.93) ref -> x20 class-hnd exact single-def <System.RuntimeType>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T46] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp1 [V13,T48] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp4 [V16,T33] ( 4, 2.67) ref -> x15
-; V17 tmp5 [V17,T29] ( 2, 1.99) int -> x0
-; V18 tmp6 [V18,T40] ( 2, 0.02) int -> x0
-; V19 tmp7 [V19,T30] ( 2, 1.99) int -> x0
-; V20 tmp8 [V20,T34] ( 3, 1.98) ref -> x20
-;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V22 tmp10 [V22,T47] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V23 tmp11 [V23,T45] ( 2, 0.01) int -> x0
-;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V25 tmp13 [V25,T12] ( 6, 6.03) ref -> x15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V26 tmp14 [V26,T48] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp15 [V27,T04] ( 3, 11.79) ref -> x28 class-hnd exact "impAppendStmt" <<unknown class>>
-;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V29 tmp17 [V29,T01] ( 5, 14.74) ref -> x15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V30 tmp18 [V30,T49] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V31 tmp19 [V31,T50] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp20 [V32,T27] ( 3, 3.93) ref -> x15 "guarded devirt return temp"
-; V33 tmp21 [V33,T03] ( 5, 11.79) ref -> x0 "guarded devirt arg temp"
-;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V35 tmp23 [V35,T39] ( 3, 1.34) ref -> x22 "guarded devirt return temp"
-;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V37 tmp25 [V37,T38] ( 3, 1.98) ref -> x20 "guarded devirt return temp"
-;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V16 tmp4 [V16,T35] ( 4, 2.67) ref -> x15
+; V17 tmp5 [V17,T30] ( 2, 1.99) int -> x0
+; V18 tmp6 [V18,T42] ( 2, 0.02) int -> x0
+; V19 tmp7 [V19,T31] ( 2, 1.99) int -> x0
+; V20 tmp8 [V20,T36] ( 3, 1.98) ref -> x20
+; V21 tmp9 [V21,T49] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T47] ( 2, 0.01) int -> x0
+; V23 tmp11 [V23,T34] ( 2, 2.68) ref -> x15 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V24 tmp12 [V24,T50] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp13 [V25,T04] ( 3, 11.79) ref -> x28 class-hnd exact "impAppendStmt" <<unknown class>>
+; V26 tmp14 [V26,T10] ( 2, 7.86) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.RuntimeType>
+; V27 tmp15 [V27,T51] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp16 [V28,T52] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp17 [V29,T28] ( 3, 3.93) ref -> x0 "guarded devirt return temp"
+; V30 tmp18 [V30,T03] ( 5, 11.79) ref -> x0 "guarded devirt arg temp"
+;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V32 tmp20 [V32,T41] ( 3, 1.34) ref -> x22 "guarded devirt return temp"
+;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V34 tmp22 [V34,T40] ( 3, 1.98) ref -> x20 "guarded devirt return temp"
+;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V37 tmp25 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp26 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -58,62 +58,61 @@
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp37 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V52 tmp40 [V52,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V53 tmp41 [V53,T22] ( 5, 4.96) ubyte -> x0 "Inline stloc first use temp"
-;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
-;* V55 tmp43 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
-;* V57 tmp45 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
-; V59 tmp47 [V59,T21] ( 12, 4.96) ref -> x23 class-hnd "Inline stloc first use temp" <System.Type>
-; V60 tmp48 [V60,T24] ( 3, 4.96) int -> x1 "guarded devirt return temp"
-;* V61 tmp49 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V62 tmp50 [V62,T25] ( 3, 4.96) ubyte -> x1 "Inline return value spill temp"
-; V63 tmp51 [V63,T23] ( 5, 4.96) ubyte -> x0 "Inline stloc first use temp"
-;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
-;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V67 tmp55 [V67,T51] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V69 tmp57 [V69,T35] ( 3, 1.98) int -> x1
-; V70 tmp58 [V70,T37] ( 2, 1.98) ubyte -> x14 "Inline stloc first use temp"
-;* V71 tmp59 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V72 tmp60 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp61 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V74 tmp62 [V74,T26] ( 2, 3.97) byref -> x14 single-def "Inlining Arg"
-;* V75 tmp63 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.m_type (fldOffset=0x0)" P-INDEP
-; V76 tmp64 [V76,T31] ( 5, 2.98) ref -> x0 single-def "field V56.m_type (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T36] ( 2, 1.98) ref -> x0 single-def "field V64.m_type (fldOffset=0x0)" P-INDEP
-;* V78 tmp66 [V78 ] ( 0, 0 ) long -> zero-ref "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V79 tmp67 [V79,T32] ( 3, 2.98) long -> x14 "field V71.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V80 tmp68 [V80,T05] ( 3, 11.79) ref -> x1 "arr expr"
-;* V81 tmp69 [V81,T28] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V82 tmp70 [V82,T52] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V83 tmp71 [V83,T53] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V84 tmp72 [V84,T44] ( 2, 0.05) ref -> x1 single-def "argument with side effect"
-; V85 tmp73 [V85,T54] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V86 tmp74 [V86,T55] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V87 tmp75 [V87,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V88 tmp76 [V88,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V89 cse0 [V89,T15] ( 3, 5.90) ref -> x14 "CSE - aggressive"
-; V90 cse1 [V90,T16] ( 3, 5.90) ref -> x0 "CSE - aggressive"
-; V91 cse2 [V91,T10] ( 4, 7.86) long -> x27 "CSE - aggressive"
-; V92 cse3 [V92,T17] ( 2, 3.93) ref -> x1 "CSE - moderate"
-; V93 cse4 [V93,T06] ( 12, 11.55) long -> [fp+0x18] multi-def "CSE - aggressive"
-; V94 cse5 [V94,T20] ( 4, 4.97) int -> x25 "CSE - moderate"
+;* V49 tmp37 [V49,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp38 [V50,T23] ( 5, 4.96) ubyte -> x0 "Inline stloc first use temp"
+;* V51 tmp39 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
+;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
+;* V53 tmp41 [V53 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
+;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
+; V56 tmp44 [V56,T22] ( 12, 4.96) ref -> x22 class-hnd "Inline stloc first use temp" <System.Type>
+; V57 tmp45 [V57,T25] ( 3, 4.96) int -> x1 "guarded devirt return temp"
+;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V59 tmp47 [V59,T26] ( 3, 4.96) ubyte -> x1 "Inline return value spill temp"
+; V60 tmp48 [V60,T24] ( 5, 4.96) ubyte -> x0 "Inline stloc first use temp"
+;* V61 tmp49 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
+;* V62 tmp50 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V63 tmp51 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V64 tmp52 [V64,T53] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V65 tmp53 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V66 tmp54 [V66,T37] ( 3, 1.98) int -> x1
+; V67 tmp55 [V67,T39] ( 2, 1.98) ubyte -> x14 "Inline stloc first use temp"
+;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V69 tmp57 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V70 tmp58 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V71 tmp59 [V71,T27] ( 2, 3.97) byref -> x14 single-def "Inlining Arg"
+;* V72 tmp60 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V52.m_type (fldOffset=0x0)" P-INDEP
+; V73 tmp61 [V73,T32] ( 5, 2.98) ref -> x0 single-def "field V53.m_type (fldOffset=0x0)" P-INDEP
+; V74 tmp62 [V74,T38] ( 2, 1.98) ref -> x0 single-def "field V61.m_type (fldOffset=0x0)" P-INDEP
+;* V75 tmp63 [V75 ] ( 0, 0 ) long -> zero-ref "field V65.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V76 tmp64 [V76,T33] ( 3, 2.98) long -> x14 "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T05] ( 3, 11.79) ref -> x14 "arr expr"
+;* V78 tmp66 [V78,T29] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V79 tmp67 [V79,T54] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V80 tmp68 [V80,T55] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V81 tmp69 [V81,T46] ( 2, 0.05) ref -> x1 single-def "argument with side effect"
+; V82 tmp70 [V82,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V83 tmp71 [V83,T57] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V84 tmp72 [V84,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V85 tmp73 [V85,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V86 cse0 [V86,T15] ( 3, 5.90) ref -> x14 "CSE - aggressive"
+; V87 cse1 [V87,T16] ( 3, 5.90) ref -> x0 "CSE - aggressive"
+; V88 cse2 [V88,T09] ( 4, 7.86) long -> x27 "CSE - aggressive"
+; V89 cse3 [V89,T17] ( 2, 3.93) ref -> x14 "CSE - moderate"
+; V90 cse4 [V90,T21] ( 4, 4.97) int -> x25 "CSE - moderate"
+; V91 rat0 [V91,T01] ( 5, 14.74) ref -> x15 class-hnd "replacement local" <System.RuntimeType>
+; V92 rat1 [V92,T18] ( 5, 5.03) ref -> x22 class-hnd "replacement local" <System.RuntimeType>
+; V93 rat2 [V93,T11] ( 5, 7.44) ref -> x20 class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -129,11 +128,11 @@ G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x23]
;; size=52 bbWeight=1 PerfScore 9.50
G_M32743_IG02: ; bbWeight=1, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
- cbz x24, G_M32743_IG41
+ cbz x24, G_M32743_IG43
cmp w2, #22
ccmp w3, #1, 0, eq
- bne G_M32743_IG42
- cbz x21, G_M32743_IG46
+ bne G_M32743_IG44
+ cbz x21, G_M32743_IG48
ldr w25, [x21, #0x08]
mov w1, w25
movz x0, #0xD1FFAB1E
@@ -159,28 +158,31 @@ G_M32743_IG03: ; bbWeight=1.97, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x2
ubfiz x27, x26, #3, #32
ldr x0, [x14, x27]
; gcrRegs +[x0]
- cbz x0, G_M32743_IG44
+ cbz x0, G_M32743_IG46
ldr x28, [x19, #0x08]
; gcrRegs +[x28]
ldr x14, [x0]
; byrRegs -[x14]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x14, x1
- bne G_M32743_IG43
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #1 LSL #32
+ cmp x14, x15
+ bne G_M32743_IG45
+ ;; size=44 bbWeight=1.97 PerfScore 28.50
+G_M32743_IG04: ; bbWeight=1.97, gcrefRegs=11F80001 {x0 x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
mov x15, x0
; gcrRegs +[x15]
- ;; size=48 bbWeight=1.97 PerfScore 29.48
-G_M32743_IG04: ; bbWeight=1.97, gcrefRegs=11F88000 {x15 x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
cbz x15, G_M32743_IG07
- ;; size=4 bbWeight=1.97 PerfScore 1.97
+ ;; size=8 bbWeight=1.97 PerfScore 2.95
G_M32743_IG05: ; bbWeight=0.98, gcrefRegs=11F88000 {x15 x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr x14, [x15]
- cmp x14, x1
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #1 LSL #32
+ cmp x14, x12
beq G_M32743_IG07
- ;; size=12 bbWeight=0.98 PerfScore 4.42
+ ;; size=24 bbWeight=0.98 PerfScore 5.90
G_M32743_IG06: ; bbWeight=0.49, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x15]
mov x15, xzr
...
+16 (+6.45%) : 77318.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,17 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf2.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,302.33) int -> x19
+; V01 loc0 [V01,T01] ( 4,302.33) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,453.02) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,251.68) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,755.04) ref -> x15 class-hnd "spilling QMark2" <PerfLabTests.CastingPerf2.Foo>
-; V06 cse0 [V06,T05] ( 2,100.78) ref -> x23 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3,100.69) ref -> x22 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.79) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3,100.69) long -> x21 "CSE - aggressive"
-; V10 rat0 [V10,T09] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
-; V11 rat1 [V11,T08] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V03 cse0 [V03,T03] ( 2,100.78) ref -> x23 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4,100.69) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.79) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3,100.69) long -> x21 "CSE - aggressive"
+; V07 rat0 [V07,T07] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
+; V08 rat1 [V08,T06] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V09 rat2 [V09,T00] ( 5,704.70) ref -> x15 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
;
; Lcl frame size = 8
@@ -33,10 +31,10 @@ G_M59156_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w19, [fp, #0x84]
;; size=24 bbWeight=0.01 PerfScore 0.07
G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr w20, [x0]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #1 LSL #32
+ ldr w20, [x14]
cmp w19, w20
bge G_M59156_IG11
movz x21, #0xD1FFAB1E
@@ -51,11 +49,11 @@ G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cbz x23, G_M59156_IG05
;; size=52 bbWeight=0.01 PerfScore 0.13
G_M59156_IG03: ; bbWeight=0.01, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
+ ldr x14, [x23]
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #1 LSL #32
+ cmp x14, x15
beq G_M59156_IG05
;; size=24 bbWeight=0.01 PerfScore 0.03
G_M59156_IG04: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
@@ -75,26 +73,40 @@ G_M59156_IG04: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}
;; size=36 bbWeight=0 PerfScore 0.00
G_M59156_IG05: ; bbWeight=100.77, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x23, G_M59156_IG10
+ cbz x23, G_M59156_IG08
;; size=4 bbWeight=100.77 PerfScore 100.77
G_M59156_IG06: ; bbWeight=100.67, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x15, x22
+ ; gcrRegs +[x15]
+ cbnz x15, G_M59156_IG09
+ ;; size=8 bbWeight=100.67 PerfScore 151.01
+G_M59156_IG07: ; bbWeight=100.67, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
+ add x14, x21, #80
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ;; size=8 bbWeight=100.67 PerfScore 151.01
+G_M59156_IG08: ; bbWeight=100.77, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ add w19, w19, #1
+ cmp w19, w20
+ bge G_M59156_IG11
+ b G_M59156_IG05
+ ;; size=16 bbWeight=100.77 PerfScore 302.32
+G_M59156_IG09: ; bbWeight=50.34, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x15]
+ ldr x14, [x15]
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #1 LSL #32
+ cmp x14, x12
+ beq G_M59156_IG07
+ ;; size=24 bbWeight=50.34 PerfScore 302.02
+G_M59156_IG10: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M59156_IG09
- ;; size=12 bbWeight=100.67 PerfScore 201.34
-G_M59156_IG07: ; bbWeight=50.34, gcrefRegs=C08002 {x1 x15 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- beq G_M59156_IG09
- ;; size=24 bbWeight=50.34 PerfScore 302.02
-G_M59156_IG08: ; bbWeight=25.17, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -104,20 +116,10 @@ G_M59156_IG08: ; bbWeight=25.17, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=25.17 PerfScore 163.59
-G_M59156_IG09: ; bbWeight=100.67, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- add x14, x21, #80
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
- ;; size=8 bbWeight=100.67 PerfScore 151.01
-G_M59156_IG10: ; bbWeight=100.77, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w20
- blt G_M59156_IG05
- ;; size=12 bbWeight=100.77 PerfScore 201.54
+ b G_M59156_IG07
+ ;; size=44 bbWeight=0 PerfScore 0.00
G_M59156_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x22-x23]
+ ; gcrRegs -[x0 x15 x22-x23]
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -126,7 +128,7 @@ G_M59156_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 24, PerfScore 1120.50, instruction count 62, allocated bytes for code 248 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 264, prolog size 24, PerfScore 1007.34, instruction count 66, allocated bytes for code 264 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -137,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+6.45%) : 59171.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,17 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,299.98) int -> x19
+; V01 loc0 [V01,T01] ( 4,299.98) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,447.35) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,248.53) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,745.58) ref -> x15 class-hnd "spilling QMark2" <PerfLabTests.Foo[]>
-; V06 cse0 [V06,T05] ( 2,100.00) ref -> x23 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3, 99.43) ref -> x22 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.01) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3, 99.43) long -> x21 "CSE - aggressive"
-; V10 rat0 [V10,T09] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
-; V11 rat1 [V11,T08] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V03 cse0 [V03,T03] ( 2,100.00) ref -> x23 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4, 99.43) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.01) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3, 99.43) long -> x21 "CSE - aggressive"
+; V07 rat0 [V07,T07] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
+; V08 rat1 [V08,T06] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V09 rat2 [V09,T00] ( 5,695.88) ref -> x15 class-hnd "replacement local" <PerfLabTests.Foo[]>
;
; Lcl frame size = 8
@@ -33,12 +31,12 @@ G_M13964_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w19, [fp, #0x84]
;; size=24 bbWeight=0.01 PerfScore 0.06
G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr w20, [x0]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #1 LSL #32
+ ldr w20, [x14]
cmp w19, w20
- bge G_M13964_IG12
+ bge G_M13964_IG13
;; size=24 bbWeight=0.01 PerfScore 0.06
G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E
@@ -53,11 +51,11 @@ G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cbz x23, G_M13964_IG06
;; size=28 bbWeight=0.01 PerfScore 0.06
G_M13964_IG04: ; bbWeight=0.00, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
+ ldr x14, [x23]
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #1 LSL #32
+ cmp x14, x15
beq G_M13964_IG06
;; size=24 bbWeight=0.00 PerfScore 0.03
G_M13964_IG05: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
@@ -77,26 +75,42 @@ G_M13964_IG05: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}
;; size=36 bbWeight=0 PerfScore 0.00
G_M13964_IG06: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x23, G_M13964_IG11
+ cbz x23, G_M13964_IG09
;; size=4 bbWeight=99.99 PerfScore 99.99
G_M13964_IG07: ; bbWeight=99.41, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x15, x22
+ ; gcrRegs +[x15]
+ cbnz x15, G_M13964_IG11
+ ;; size=8 bbWeight=99.41 PerfScore 149.12
+G_M13964_IG08: ; bbWeight=99.41, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
+ add x14, x21, #16
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ;; size=8 bbWeight=99.41 PerfScore 149.12
+G_M13964_IG09: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ add w19, w19, #1
+ cmp w19, w20
+ bge G_M13964_IG13
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M13964_IG10: ; bbWeight=99.98, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ b G_M13964_IG06
+ ;; size=4 bbWeight=99.98 PerfScore 99.98
+G_M13964_IG11: ; bbWeight=49.71, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x15]
+ ldr x14, [x15]
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #1 LSL #32
+ cmp x14, x12
+ beq G_M13964_IG08
+ ;; size=24 bbWeight=49.71 PerfScore 298.23
+G_M13964_IG12: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M13964_IG10
- ;; size=12 bbWeight=99.41 PerfScore 198.82
-G_M13964_IG08: ; bbWeight=49.71, gcrefRegs=C08002 {x1 x15 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- beq G_M13964_IG10
- ;; size=24 bbWeight=49.71 PerfScore 298.23
-G_M13964_IG09: ; bbWeight=24.85, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -106,20 +120,10 @@ G_M13964_IG09: ; bbWeight=24.85, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=24.85 PerfScore 161.54
-G_M13964_IG10: ; bbWeight=99.41, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- add x14, x21, #16
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
- ;; size=8 bbWeight=99.41 PerfScore 149.12
-G_M13964_IG11: ; bbWeight=99.99, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w20
- blt G_M13964_IG06
- ;; size=12 bbWeight=99.99 PerfScore 199.98
-G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x22-x23]
+ b G_M13964_IG08
+ ;; size=44 bbWeight=0 PerfScore 0.00
+G_M13964_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x0 x15 x22-x23]
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -128,7 +132,7 @@ G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 24, PerfScore 1107.90, instruction count 62, allocated bytes for code 248 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 264, prolog size 24, PerfScore 996.64, instruction count 66, allocated bytes for code 264 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -139,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.osx.arm64.checked.mch
-28 (-28.00%) : 3535.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-25.93%) : 9521.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x20]
mov fp, sp
str x1, [fp, #0x18]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [x1, #0x38]
+ ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
- ldr x2, [x20]
+ mov x0, x19
+ ldr x2, [x19]
ldr x2, [x2, #0x70]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M60617_IG05
- ;; size=44 bbWeight=1 PerfScore 19.50
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M60617_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 39076.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)
@@ -8,22 +8,19 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
-; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref
-; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg"
-; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg"
+; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov x1, x0
; gcrRegs +[x1]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M44215_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M44215_IG08
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00
+G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -104,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 47134.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,36 +25,22 @@ G_M50369_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0x54]
;; size=20 bbWeight=1 PerfScore 5.50
G_M50369_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr w20, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr w20, [x1]
cmp w19, w20
- bge G_M50369_IG07
+ bge G_M50369_IG04
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #2 LSL #32
ldr x22, [x21]
; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50
-G_M50369_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M50369_IG06
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M50369_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- beq G_M50369_IG06
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M50369_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -65,19 +48,31 @@ G_M50369_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00
+G_M50369_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ add x14, x21, #16
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M50369_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add x14, x21, #16
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1
cmp w19, w20
blt G_M50369_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
-G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00
+G_M50369_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
@@ -86,7 +81,7 @@ G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -97,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 47250.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,36 +25,22 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0x54]
;; size=20 bbWeight=1 PerfScore 5.50
G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr w20, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr w20, [x1]
cmp w19, w20
- bge G_M40467_IG07
+ bge G_M40467_IG04
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #2 LSL #32
ldr x22, [x21]
; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50
-G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M40467_IG06
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M40467_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- beq G_M40467_IG06
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -65,19 +48,31 @@ G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00
+G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ add x14, x21, #8
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M40467_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1
cmp w19, w20
blt G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
-G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00
+G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
@@ -86,7 +81,7 @@ G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -97,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+7.32%) : 30296.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,36 +25,22 @@ G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w19, [fp, #0x54]
;; size=20 bbWeight=1 PerfScore 5.50
G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- ldr w20, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr w20, [x1]
cmp w19, w20
- bge G_M36328_IG07
+ bge G_M36328_IG04
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #2 LSL #32
ldr x22, [x21]
; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50
-G_M36328_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M36328_IG06
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M36328_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x0, x2
- beq G_M36328_IG06
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -65,19 +48,31 @@ G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00
+G_M36328_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ sub x14, x21, #56
mov x15, x0
; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M36328_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- sub x14, x21, #56
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1
cmp w19, w20
blt G_M36328_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
-G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00
+G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
@@ -86,7 +81,7 @@ G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -97,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.osx.arm64.checked.mch
-24 (-40.00%) : 215891.dasm - Program:CastToArray(System.Object):int
@@ -6,44 +6,32 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <int[]>
;
; Lcl frame size = 0
G_M17219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M17219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M17219_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M17219_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17219_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
- beq G_M17219_IG05
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M17219_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
- mov x0, x3
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M17219_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M17219_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 7.19, instruction count 15, allocated bytes for code 60 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
+; Total bytes of code 36, prolog size 8, PerfScore 6.50, instruction count 9, allocated bytes for code 36 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
; ============================================================
Unwind Info:
@@ -54,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-28.57%) : 311801.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,12 +8,11 @@
; 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) long -> x19 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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 -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -22,40 +21,30 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x1, [fp, #0x10]
- mov x19, x1
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ldr x0, [x1, #0x38]
+ ldr x19, [x0]
+ mov x0, x19
mov x1, x2
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1-x2] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M51557_IG05
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M51557_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M51557_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 19.81, instruction count 21, allocated bytes for code 84 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 17.50, instruction count 15, allocated bytes for code 60 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 310990.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 579704.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
@@ -9,28 +9,27 @@
; 2 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 5 ) ref -> x20 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
+; V00 this [V00,T01] ( 7, 5 ) ref -> x20 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
; V01 arg1 [V01,T00] ( 9, 6 ) ref -> x19 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,T09] ( 2, 2 ) int -> x0
-;* V04 tmp2 [V04,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp3 [V05,T01] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.TypeDesc>
-; V06 tmp4 [V06,T06] ( 3, 4 ) ref -> x23 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V08 tmp6 [V08,T12] ( 3, 2 ) ref -> x24 "guarded devirt return temp"
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V10 tmp8 [V10,T13] ( 3, 2 ) ref -> x23 "guarded devirt return temp"
-; V11 tmp9 [V11,T04] ( 5, 6 ) ref -> x0 single-def "guarded devirt arg temp"
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V13 tmp11 [V13,T14] ( 3, 2 ) ref -> x24 "guarded devirt return temp"
-; V14 tmp12 [V14,T05] ( 5, 6 ) ref -> x0 single-def "guarded devirt arg temp"
-;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+; V03 tmp1 [V03,T07] ( 2, 2 ) int -> x0
+; V04 tmp2 [V04,T05] ( 3, 4 ) ref -> x23 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V05 tmp3 [V05,T13] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V07 tmp5 [V07,T10] ( 3, 2 ) ref -> x24 "guarded devirt return temp"
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
+; V09 tmp7 [V09,T11] ( 3, 2 ) ref -> x23 "guarded devirt return temp"
+; V10 tmp8 [V10,T03] ( 5, 6 ) ref -> x0 single-def "guarded devirt arg temp"
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+; V12 tmp10 [V12,T12] ( 3, 2 ) ref -> x24 "guarded devirt return temp"
+; V13 tmp11 [V13,T04] ( 5, 6 ) ref -> x0 single-def "guarded devirt arg temp"
+;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
+;* V15 tmp13 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp14 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V17 tmp15 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 cse0 [V18,T10] ( 3, 3 ) long -> x21 "CSE - aggressive"
-; V19 cse1 [V19,T11] ( 3, 3 ) long -> x22 "CSE - aggressive"
-; V20 cse2 [V20,T08] ( 3, 3 ) ref -> x1 "CSE - aggressive"
-; V21 rat0 [V21,T03] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.TypeDesc>
+; V17 cse0 [V17,T08] ( 3, 3 ) long -> x21 "CSE - aggressive"
+; V18 cse1 [V18,T09] ( 3, 3 ) long -> x22 "CSE - aggressive"
+; V19 cse2 [V19,T06] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+; V20 rat0 [V20,T02] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.TypeDesc>
;
; Lcl frame size = 0
+4 (+0.79%) : 474799.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b_100(System.Object):this (Tier1)
@@ -8,26 +8,26 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ThreadPoolTaskScheduler+<>c>
-; V01 arg1 [V01,T02] ( 6, 4.12) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T03] ( 6, 4 ) ref -> x19 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,T13] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 8, 10.75) ref -> x20 class-hnd "spilling QMark2" <System.Threading.Tasks.Task>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V07 tmp5 [V07,T10] ( 4, 1.50) ubyte -> x22 "Inline return value spill temp"
-; V08 tmp6 [V08,T04] ( 4, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V09 tmp7 [V09,T14] ( 3, 1 ) ubyte -> x22 "Inline return value spill temp"
-; V10 tmp8 [V10,T08] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V12 tmp10 [V12,T15] ( 2, 1 ) int -> x0 "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 2, 2 ) byref -> x1 single-def "argument with side effect"
-; V14 cse0 [V14,T03] ( 7, 5.50) byref -> x21 "CSE - aggressive"
-; V15 cse1 [V15,T11] ( 3, 1.50) ref -> x1 "CSE - moderate"
-; V16 cse2 [V16,T12] ( 3, 1.50) ref -> x0 "CSE - moderate"
-; V17 rat0 [V17,T07] ( 3, 2 ) byref -> x23 "TLS field access"
-; V18 rat1 [V18,T05] ( 3, 3 ) long -> x0 "TLS access"
-; V19 rat2 [V19,T06] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
-; V20 rat3 [V20,T01] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <System.Threading.Tasks.Task>
+;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V04 tmp2 [V04,T00] ( 5, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V06 tmp4 [V06,T11] ( 4, 1.50) ubyte -> x22 "Inline return value spill temp"
+; V07 tmp5 [V07,T05] ( 4, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V08 tmp6 [V08,T14] ( 3, 1 ) ubyte -> x22 "Inline return value spill temp"
+; V09 tmp7 [V09,T09] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V11 tmp9 [V11,T15] ( 2, 1 ) int -> x0 "Inline stloc first use temp"
+; V12 tmp10 [V12,T10] ( 2, 2 ) byref -> x1 single-def "argument with side effect"
+; V13 cse0 [V13,T04] ( 7, 5.50) byref -> x21 "CSE - aggressive"
+; V14 cse1 [V14,T12] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V15 cse2 [V15,T13] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V16 rat0 [V16,T08] ( 3, 2 ) byref -> x23 "TLS field access"
+; V17 rat1 [V17,T06] ( 3, 3 ) long -> x0 "TLS access"
+; V18 rat2 [V18,T07] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
+; V19 rat3 [V19,T01] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V20 rat4 [V20,T02] ( 5, 7 ) ref -> x20 class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 8
@@ -51,7 +51,7 @@ G_M60851_IG03: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M60851_IG19
+ bne G_M60851_IG17
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M60851_IG04: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
cbnz x2, G_M60851_IG06
@@ -74,9 +74,17 @@ G_M60851_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M60851_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x20, x19
; gcrRegs +[x20]
- cbnz x20, G_M60851_IG10
+ cbz x20, G_M60851_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M60851_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M60851_IG18
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M60851_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
add x21, x20, #52
; byrRegs +[x21]
@@ -85,60 +93,33 @@ G_M60851_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
stlr w0, [x21]
ldapur x0, [x20, #0x28]
; gcrRegs +[x0]
- cbz x0, G_M60851_IG22
+ cbz x0, G_M60851_IG21
;; size=24 bbWeight=1 PerfScore 9.00
-G_M60851_IG08: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=200000 {x21}, byref, isz
+G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=200000 {x21}, byref, isz
ldapur w1, [x0, #0x38]
cmp w1, #1
- beq G_M60851_IG21
+ beq G_M60851_IG20
add x0, x0, #64
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M60851_IG20
+ cbz x0, G_M60851_IG19
ldapur w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w0, #0
cset x22, ne
;; size=36 bbWeight=0.50 PerfScore 6.50
-G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
- b G_M60851_IG12
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M60851_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs -[x21]
- ldr x0, [x20]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
- beq G_M60851_IG07
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M60851_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov x0, x1
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
- b G_M60851_IG07
- ;; size=20 bbWeight=0.12 PerfScore 0.44
-G_M60851_IG12: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x0]
- ; byrRegs +[x21]
+G_M60851_IG10: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
ldapr w0, [x21]
and w0, w0, #0xD1FFAB1E
mov w1, #0xD1FFAB1E
cmp w22, #0
ccmp w0, w1, z, eq
- beq G_M60851_IG16
+ beq G_M60851_IG14
;; size=24 bbWeight=1 PerfScore 6.00
-G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -151,16 +132,16 @@ G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; gcr arg pop 0
ldr w1, [x0, #0x10]
cmp w1, #4
- blt G_M60851_IG23
+ blt G_M60851_IG22
ldr x1, [x0, #0x18]
ldr x1, [x1, #0x20]
- cbz x1, G_M60851_IG23
+ cbz x1, G_M60851_IG22
ldr x1, [x1]
; byrRegs +[x1]
add x23, x1, #16
; byrRegs +[x23]
;; size=64 bbWeight=0.50 PerfScore 11.00
-G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
+G_M60851_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000 {x23}, byref
; byrRegs -[x1]
add x1, x23, #80
; byrRegs +[x1]
@@ -172,7 +153,7 @@ G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=800000
movk x3, #1 LSL #32
ldr x3, [x3]
;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M60851_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -180,17 +161,17 @@ G_M60851_IG15: ; bbWeight=0.50, epilog, nogc, extend
br x3
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M60851_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M60851_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs -[x0]
; byrRegs -[x1 x23] +[x21]
ldapr w0, [x21]
and w0, w0, #0xD1FFAB1E
cmp w0, #0xD1FFAB1E, LSL #12
- beq G_M60851_IG18
+ beq G_M60851_IG16
ldapr w0, [x21]
orr w0, w0, #0xD1FFAB1E
swpal w0, w0, [x21]
- tbnz w0, #22, G_M60851_IG18
+ tbnz w0, #22, G_M60851_IG16
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -198,7 +179,7 @@ G_M60851_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100
movk x1, #1 LSL #32
ldr x1, [x1]
;; size=52 bbWeight=0.50 PerfScore 8.75
-G_M60851_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -206,7 +187,7 @@ G_M60851_IG17: ; bbWeight=0.50, epilog, nogc, extend
br x1
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60851_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0 x20]
; byrRegs -[x21]
ldr x23, [sp, #0x38]
@@ -215,7 +196,7 @@ G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M60851_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M60851_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x1, x19
; gcrRegs +[x1]
@@ -229,21 +210,35 @@ G_M60851_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcrRegs +[x2]
b G_M60851_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M60851_IG20: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
- ; gcrRegs -[x0 x2 x19] +[x20]
+G_M60851_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[x1 x19] +[x0]
+ ; gcr arg pop 0
+ mov x20, x0
+ ; gcrRegs +[x20]
+ b G_M60851_IG08
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M60851_IG19: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs -[x0]
; byrRegs +[x21]
mov w22, wzr
- b G_M60851_IG09
+ b G_M60851_IG10
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M60851_IG20: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+ mov w22, #1
+ b G_M60851_IG10
...
+12 (+1.19%) : 253217.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort
@@ -8,84 +8,84 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 7, 58 ) long -> [fp+0x48] do-not-enreg[Z] EH-live
-; V01 arg1 [V01,T19] ( 3, 10 ) short -> [fp+0x44] EH-live single-def
-; V02 arg2 [V02,T09] ( 7, 42 ) byref -> [fp+0x18] EH-live single-def
-; V03 arg3 [V03,T16] ( 5, 26 ) byref -> [fp+0x10] EH-live single-def
+; V00 arg0 [V00,T07] ( 7, 58 ) long -> [fp+0x58] do-not-enreg[Z] EH-live
+; V01 arg1 [V01,T19] ( 3, 10 ) short -> [fp+0x54] EH-live single-def
+; V02 arg2 [V02,T09] ( 7, 42 ) byref -> [fp+0x28] EH-live single-def
+; V03 arg3 [V03,T16] ( 5, 26 ) byref -> [fp+0x20] EH-live single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V05 loc1 [V05,T33] ( 0, 0 ) ushort -> zero-ref EH-live single-def
-; V06 loc2 [V06,T31] ( 5, 17 ) double -> [fp+0x38] do-not-enreg[Z] EH-live
+;* V05 loc1 [V05,T31] ( 0, 0 ) ushort -> zero-ref EH-live single-def
+; V06 loc2 [V06,T29] ( 5, 17 ) double -> [fp+0x48] do-not-enreg[Z] EH-live
; V07 loc3 [V07,T21] ( 6, 6 ) ref -> x20 class-hnd single-def <<unknown class>>
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc5 [V09,T18] ( 3, 24 ) byte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11 ] ( 9, 9 ) struct (24) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
-; V12 tmp2 [V12,T22] ( 2, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-; V13 tmp3 [V13,T26] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 tmp4 [V14,T23] ( 2, 4 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp5 [V15,T00] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V16 tmp6 [V16,T01] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
-; V17 tmp7 [V17,T02] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <System.Char>
-; V18 tmp8 [V18,T03] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
-; V19 tmp9 [V19,T08] ( 3, 48 ) int -> x0 "dup spill"
-; V20 tmp10 [V20,T14] ( 2, 32 ) int -> x1 "impSpillLclRefs"
-; V21 tmp11 [V21,T15] ( 2, 32 ) int -> x0 "dup spill"
-;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V11 tmp1 [V11 ] ( 9, 9 ) struct (24) [fp+0x30] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
+; V12 tmp2 [V12,T24] ( 2, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V13 tmp3 [V13,T00] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V14 tmp4 [V14,T01] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
+; V15 tmp5 [V15,T02] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <System.Char>
+; V16 tmp6 [V16,T03] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
+; V17 tmp7 [V17,T08] ( 3, 48 ) int -> x0 "dup spill"
+; V18 tmp8 [V18,T14] ( 2, 32 ) int -> x1 "impSpillLclRefs"
+; V19 tmp9 [V19,T15] ( 2, 32 ) int -> x0 "dup spill"
+;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V28 tmp18 [V28,T32] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <ushort[]>
-;* V29 tmp19 [V29 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V31 tmp21 [V31,T17] ( 4, 26 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.String>
-;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V33 tmp23 [V33,T20] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V34 tmp24 [V34,T27] ( 2, 4 ) long -> x2 "argument with side effect"
-; V35 tmp25 [V35,T28] ( 2, 4 ) long -> x2 "argument with side effect"
-; V36 tmp26 [V36,T24] ( 3, 6 ) int -> x14 "MD array shared temp"
-; V37 tmp27 [V37,T25] ( 3, 6 ) int -> x12 "MD array shared temp"
-; V38 PSPSym [V38,T30] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T10] ( 2, 36 ) int -> x22 hoist "CSE - aggressive"
-; V40 cse1 [V40,T06] ( 4, 72 ) long -> x20 hoist multi-def "CSE - aggressive"
-; V41 cse2 [V41,T05] ( 5, 76 ) long -> x20 "CSE - aggressive"
-; V42 cse3 [V42,T04] ( 7, 78 ) long -> x21 multi-def "CSE - aggressive"
-; V43 cse4 [V43,T11] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
-; V44 cse5 [V44,T12] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
-; V45 cse6 [V45,T13] ( 4, 32 ) int -> x0 "CSE - aggressive"
-; V46 cse7 [V46,T29] ( 3, 3 ) int -> xip0 "CSE - moderate"
+; V26 tmp16 [V26,T30] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <ushort[]>
+;* V27 tmp17 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V29 tmp19 [V29,T17] ( 4, 26 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.String>
+;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+;* V31 tmp21 [V31,T20] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V32 tmp22 [V32,T25] ( 2, 4 ) long -> x2 "argument with side effect"
+; V33 tmp23 [V33,T26] ( 2, 4 ) long -> x2 "argument with side effect"
+; V34 tmp24 [V34,T22] ( 3, 6 ) int -> x0 "MD array shared temp"
+; V35 tmp25 [V35,T23] ( 3, 6 ) int -> x2 "MD array shared temp"
+; V36 PSPSym [V36,T28] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
+; V37 cse0 [V37,T10] ( 2, 36 ) int -> x22 hoist "CSE - aggressive"
+; V38 cse1 [V38,T06] ( 4, 72 ) long -> x20 hoist multi-def "CSE - aggressive"
+; V39 cse2 [V39,T05] ( 5, 76 ) long -> x20 "CSE - aggressive"
+; V40 cse3 [V40,T04] ( 7, 78 ) long -> x21 multi-def "CSE - aggressive"
+; V41 cse4 [V41,T11] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
+; V42 cse5 [V42,T12] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
+; V43 cse6 [V43,T13] ( 4, 32 ) int -> x0 "CSE - aggressive"
+; V44 cse7 [V44,T27] ( 3, 3 ) int -> x3 "CSE - moderate"
+; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M19405_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- str x23, [sp, #0x78]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x68]
+ stp x21, x22, [sp, #0x78]
+ str x23, [sp, #0x88]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V11 tmp1], [V11 tmp1+0x08]
- str xzr, [fp, #0x30] // [V11 tmp1+0x10]
- add x4, sp, #128
- stp x0, x4, [fp, #0x48] // [V00 arg0], [V38 PSPSym]
- str w1, [fp, #0x44] // [V01 arg1]
- stp x3, x2, [fp, #0x10] // [V03 arg3], [V02 arg2]
+ stp xzr, xzr, [fp, #0x30] // [V11 tmp1], [V11 tmp1+0x08]
+ str xzr, [fp, #0x40] // [V11 tmp1+0x10]
+ str xzr, [fp, #0x18] // [TEMP_01]
+ add x4, sp, #144
+ stp x0, x4, [fp, #0x58] // [V00 arg0], [V36 PSPSym]
+ str w1, [fp, #0x54] // [V01 arg1]
+ stp x3, x2, [fp, #0x20] // [V03 arg3], [V02 arg2]
; GC ptr vars +{V02 V03}
mov x19, x2
; byrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
+ ;; size=52 bbWeight=1 PerfScore 11.50
G_M19405_IG02: ; bbWeight=1, gcVars=0000000000010200 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
mov w2, #5
- str w2, [fp, #0x20] // [V11 tmp1]
+ str w2, [fp, #0x30] // [V11 tmp1]
mov w2, #24
- str w2, [fp, #0x24] // [V11 tmp1+0x04]
+ str w2, [fp, #0x34] // [V11 tmp1+0x04]
mov w2, #65
- str w2, [fp, #0x28] // [V11 tmp1+0x08]
+ str w2, [fp, #0x38] // [V11 tmp1+0x08]
mov w2, #9
- str w2, [fp, #0x2C] // [V11 tmp1+0x0c]
+ str w2, [fp, #0x3C] // [V11 tmp1+0x0c]
mov w2, #29
- str w2, [fp, #0x30] // [V11 tmp1+0x10]
- add x2, fp, #32 // [V11 tmp1]
+ str w2, [fp, #0x40] // [V11 tmp1+0x10]
+ add x2, fp, #48 // [V11 tmp1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -94,12 +94,12 @@ G_M19405_IG02: ; bbWeight=1, gcVars=0000000000010200 {V02 V03}, gcrefRegs
; gcrRegs +[x0]
; gcr arg pop 0
ldr d16, [@RWD00]
- str d16, [fp, #0x38] // [V06 loc2]
+ str d16, [fp, #0x48] // [V06 loc2]
mov w2, #41
- str w2, [fp, #0x20] // [V11 tmp1]
+ str w2, [fp, #0x30] // [V11 tmp1]
mov w2, #15
- str w2, [fp, #0x24] // [V11 tmp1+0x04]
- add x2, fp, #32 // [V11 tmp1]
+ str w2, [fp, #0x34] // [V11 tmp1+0x04]
+ add x2, fp, #48 // [V11 tmp1]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -122,49 +122,52 @@ G_M19405_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
+ ldr w0, [x20, #0x18]
; gcrRegs -[x0]
+ mov w2, #26
+ sub w0, w2, w0
+ ldp w2, w3, [x20, #0x10]
+ cmp w0, w2
+ bhs G_M19405_IG15
+ ldr w2, [x20, #0x1C]
+ mov w4, #65
+ sub w2, w4, w2
+ cmp w2, w3
+ bhs G_M19405_IG15
+ madd w0, w0, w3, w2
+ ubfiz x0, x0, #3, #32
+ add x0, x0, #32
+ add x14, x20, x0
+ ; byrRegs +[x14]
+ str x14, [fp, #0x18] // [TEMP_01]
+ movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1] +[x0]
+ ; gcrRegs -[x1 x20] +[x0]
+ ; byrRegs -[x14]
; gcr arg pop 0
+ ldr x14, [fp, #0x18] // [TEMP_01]
+ ; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
- ldr w14, [x20, #0x18]
- mov w12, #26
- sub w14, w12, w14
- ldp w12, wip0, [x20, #0x10]
- cmp w14, w12
- bhs G_M19405_IG15
- ldr w12, [x20, #0x1C]
- mov w0, #65
- ; gcrRegs -[x0]
- sub w12, w0, w12
- cmp w12, wip0
- bhs G_M19405_IG15
- madd w14, w14, wip0, w12
- ubfiz x14, x14, #3, #32
- add x14, x14, #32
- add x14, x20, x14
- ; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=108 bbWeight=1 PerfScore 25.50
+ ;; size=116 bbWeight=1 PerfScore 28.50
G_M19405_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- ldr x19, [fp, #0x18] // [V02 arg2]
+ ldr x19, [fp, #0x28] // [V02 arg2]
; byrRegs +[x19]
;; size=4 bbWeight=8 PerfScore 16.00
G_M19405_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr d16, [fp, #0x38] // [V06 loc2]
+ ldr d16, [fp, #0x48] // [V06 loc2]
fmov d17, #27.0000
fmul d16, d16, d17
- str d16, [fp, #0x38] // [V06 loc2]
+ str d16, [fp, #0x48] // [V06 loc2]
;; size=16 bbWeight=4 PerfScore 26.00
G_M19405_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldrh w0, [fp, #0x48] // [V00 arg0]
+ ldrh w0, [fp, #0x58] // [V00 arg0]
cbz w0, G_M19405_IG08
movz x20, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x20, #0xD1FFAB1E LSL #16
@@ -191,7 +194,7 @@ G_M19405_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; gcr arg pop 0
cmp x22, x0
beq G_M19405_IG08
- ldrsb x0, [fp, #0x48] // [V00 arg0]
+ ldrsb x0, [fp, #0x58] // [V00 arg0]
; gcrRegs -[x0]
uxth w22, w0
; gcrRegs -[x22]
@@ -231,7 +234,7 @@ G_M19405_IG09: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov x21, x0
...
libraries.crossgen2.osx.arm64.checked.mch
-36 (-34.62%) : 80405.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -8,39 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M7606_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -48,22 +35,14 @@ G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,9 +61,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-36 (-34.62%) : 150713.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -8,41 +8,28 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M8451_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -50,22 +37,14 @@ G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -84,9 +63,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-36 (-34.62%) : 80882.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)
@@ -8,39 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M16223_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M16223_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -48,22 +35,14 @@ G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M16223_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,9 +61,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+4 (+1.09%) : 167937.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
+4 (+1.09%) : 191458.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
+4 (+1.09%) : 12336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
libraries.pmi.osx.arm64.checked.mch
-28 (-46.67%) : 109920.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M7606_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 251012.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-33.33%) : 269215.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,48 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.25) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> [fp+0x18] class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.__Canon>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51997_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x20]
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M51997_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M51997_IG03: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x2]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x0, x3
- str x2, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- beq G_M51997_IG05
- ;; size=32 bbWeight=0.25 PerfScore 4.38
-G_M51997_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- ; GC ptr vars -{V04}
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- ;; size=12 bbWeight=0.12 PerfScore 0.31
-G_M51997_IG05: ; bbWeight=1, gcVars=0000000000000001 {V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ldp x0, x2, [x19, #0x08]
- ; gcrRegs +[x0 x2]
- ldr x1, [fp, #0x18] // [V04 tmp2]
+ mov x1, x0
; gcrRegs +[x1]
+ ldp x0, x2, [x19, #0x08]
+ ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):ubyte:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
ldr wzr, [x0]
- ;; size=28 bbWeight=1 PerfScore 13.50
-G_M51997_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ;; size=48 bbWeight=1 PerfScore 25.00
+G_M51997_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-G_M51997_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0-x1]
- ; GC ptr vars -{V04}
- str x2, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- b G_M51997_IG05
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 20, PerfScore 28.69, instruction count 30, allocated bytes for code 120 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 20, PerfScore 33.00, instruction count 20, allocated bytes for code 80 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -88,7 +60,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,8 +68,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
E4 end
+8 (+2.17%) : 231597.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
@@ -8,27 +8,26 @@
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.ColumnTypeConverter>
-; V01 arg1 [V01,T09] ( 3, 2.50) ref -> x1 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
-; V02 arg2 [V02,T10] ( 3, 2.50) ref -> x2 class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T01] ( 8, 26 ) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T09] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.ColumnTypeConverter>
+; V01 arg1 [V01,T10] ( 3, 2.50) ref -> x1 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V02 arg2 [V02,T11] ( 3, 2.50) ref -> x2 class-hnd single-def <System.Globalization.CultureInfo>
+; V03 arg3 [V03,T06] ( 7, 10 ) ref -> x19 class-hnd single-def <System.Object>
; V04 loc0 [V04,T04] ( 8, 21.50) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T05] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V07 tmp2 [V07,T00] ( 6, 64 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-;* V09 tmp4 [V09,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V10 tmp5 [V10,T07] ( 2, 8 ) byref -> x3 "impAppendStmt"
+; V08 tmp3 [V08,T03] ( 4, 22 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.String>
+; V09 tmp4 [V09,T08] ( 2, 8 ) byref -> x3 "impAppendStmt"
+;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T02] ( 3, 24 ) ref -> x0 "arr expr"
-; V17 tmp12 [V17,T03] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V18 tmp13 [V18,T11] ( 3, 3 ) ref -> x0 single-def "arr expr"
-;* V19 cse0 [V19,T13] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V20 cse1 [V20,T06] ( 5, 9.50) long -> x21 "CSE - aggressive"
+; V15 tmp10 [V15,T01] ( 3, 24 ) ref -> x0 "arr expr"
+; V16 tmp11 [V16,T02] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V17 tmp12 [V17,T12] ( 3, 3 ) ref -> x0 single-def "arr expr"
+;* V18 cse0 [V18,T13] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V19 cse1 [V19,T07] ( 5, 9.50) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -42,7 +41,7 @@ G_M21223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 4.00
G_M21223_IG02: ; bbWeight=1, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- cbz x19, G_M21223_IG13
+ cbz x19, G_M21223_IG14
;; size=4 bbWeight=1 PerfScore 1.00
G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x3, [x19]
@@ -50,14 +49,14 @@ G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
cmp x3, x4
- bne G_M21223_IG13
+ bne G_M21223_IG14
mov w20, wzr
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr w0, [x0]
- tbz w0, #0, G_M21223_IG16
+ tbz w0, #0, G_M21223_IG17
;; size=48 bbWeight=0.50 PerfScore 6.00
G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1-x2]
@@ -69,14 +68,14 @@ G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, #0
- ble G_M21223_IG09
+ ble G_M21223_IG10
;; size=28 bbWeight=0.50 PerfScore 4.50
G_M21223_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M21223_IG15
+ bhs G_M21223_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -90,21 +89,27 @@ G_M21223_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
ldrsb wzr, [x0]
cmp x0, x19
- beq G_M21223_IG11
+ beq G_M21223_IG12
;; size=52 bbWeight=4 PerfScore 102.00
-G_M21223_IG06: ; bbWeight=16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ cbz x1, G_M21223_IG09
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M21223_IG07: ; bbWeight=16, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
- cmp w2, w1
- bne G_M21223_IG08
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
+ bne G_M21223_IG09
;; size=16 bbWeight=16 PerfScore 120.00
-G_M21223_IG07: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG08: ; bbWeight=2, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
add x3, x0, #12
; byrRegs +[x3]
ldr w2, [x0, #0x08]
lsl w2, w2, #1
mov w2, w2
- add x1, x19, #12
+ add x1, x1, #12
+ ; gcrRegs -[x1]
; byrRegs +[x1]
mov x0, x3
; gcrRegs -[x0]
@@ -117,9 +122,9 @@ G_M21223_IG07: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
blr x3
; byrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M21223_IG11
+ cbnz w0, G_M21223_IG12
;; size=48 bbWeight=2 PerfScore 25.00
-G_M21223_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w20, w20, #1
ldr x0, [x21]
; gcrRegs +[x0]
@@ -128,24 +133,24 @@ G_M21223_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp w0, w20
bgt G_M21223_IG05
;; size=20 bbWeight=4 PerfScore 32.00
-G_M21223_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21223_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
movz x0, #184
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M21223_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21223_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M21223_IG15
+ bhs G_M21223_IG16
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -153,13 +158,13 @@ G_M21223_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M21223_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M21223_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1-x2 x19]
mov x3, x19
; gcrRegs +[x3]
@@ -168,19 +173,19 @@ G_M21223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
movk x4, #1 LSL #32
ldr x4, [x4]
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x4
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M21223_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x3 x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M21223_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21223_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -191,7 +196,7 @@ G_M21223_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
b G_M21223_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 20, PerfScore 310.75, instruction count 92, allocated bytes for code 368 (MethodHash=3d9fad18) for method System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
+; Total bytes of code 376, prolog size 20, PerfScore 313.75, instruction count 94, allocated bytes for code 376 (MethodHash=3d9fad18) for method System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -202,7 +207,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+2.70%) : 224719.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,19 +10,18 @@
;
; V00 this [V00,T03] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T07] ( 2, 1 ) ref -> x1 class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T06] ( 3, 1.50) ref -> x1 class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 5, 5 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T02] ( 5, 5 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T04] ( 4, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V08 tmp5 [V08,T05] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 5, 5 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T02] ( 5, 5 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T04] ( 4, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 2 ) byref -> x0 single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T06] ( 3, 1.50) int -> x3 "CSE - moderate"
+; V13 cse0 [V13,T07] ( 3, 1.50) int -> x3 "CSE - moderate"
;
; Lcl frame size = 0
@@ -52,6 +51,7 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ cbz x1, G_M57556_IG04
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
ldr x1, [x1, #0x08]
@@ -60,7 +60,7 @@ G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
b G_M57556_IG10
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
G_M57556_IG07: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
cbz x2, G_M57556_IG08
cbz x1, G_M57556_IG08
@@ -96,7 +96,7 @@ G_M57556_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 148, prolog size 8, PerfScore 21.75, instruction count 37, allocated bytes for code 148 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 152, prolog size 8, PerfScore 22.25, instruction count 38, allocated bytes for code 152 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -107,7 +107,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+4.35%) : 97003.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
@@ -16,27 +16,27 @@
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall"
-;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall"
-;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect"
-; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect"
-; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive"
-; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
-; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect"
+; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect"
+; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect"
+; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect"
+; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect"
+; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive"
+; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup"
+; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
+; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
+; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup"
+; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
+; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG13
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16
- b G_M31693_IG17
+ cbz x0, G_M31693_IG14
+ b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20
- b G_M31693_IG21
+ cbz x0, G_M31693_IG17
+ b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
@@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -206,7 +200,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.osx.arm64.Release.mch
-28 (-46.67%) : 557329.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,12 +8,10 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 48864
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.50 PerfScore 5.25
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 529306.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,12 +8,10 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 364
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.50 PerfScore 5.25
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-35.29%) : 62295.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)
@@ -7,12 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x2 this single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x2 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,38 +17,25 @@ G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str x1, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- ldr x2, [x0]
- ; gcrRegs +[x2]
- mov x0, x2
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- cbz x0, G_M64707_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x08]
- cmp x3, x1
- beq G_M64707_IG05
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- mov x1, x2
+ mov x2, x0
+ ; byrRegs +[x2]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
+ ldr x0, [x1, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x08]
+ ldr x1, [x2]
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M64707_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1] +[x0]
+ ; byrRegs -[x2]
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 12, PerfScore 12.62, instruction count 17, allocated bytes for code 68 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 44, prolog size 12, PerfScore 18.00, instruction count 11, allocated bytes for code 44 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -62,7 +46,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+5.13%) : 396139.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
@@ -11,13 +11,11 @@
;
; V00 this [V00,T02] ( 4, 3 ) ref -> x0 this class-hnd <OLEDB.Test.ModuleCore.CTestCase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <OLEDB.Test.ModuleCore.CTestModule>
-; V05 tmp4 [V05,T07] ( 2, 0 ) ref -> x0 single-def "arg temp"
-; V06 cse0 [V06,T05] ( 4, 3 ) ref -> x19 "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 3, 4 ) ref -> x1 "Spilling to split statement for tree"
-; V08 rat1 [V08,T01] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V02 tmp1 [V02,T05] ( 2, 0 ) ref -> x0 single-def "arg temp"
+; V03 cse0 [V03,T04] ( 5, 3 ) ref -> x19 "CSE - aggressive"
+; V04 rat0 [V04,T03] ( 3, 4 ) ref -> x1 "Spilling to split statement for tree"
+; V05 rat1 [V05,T00] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V06 rat2 [V06,T01] ( 5, 7 ) ref -> x0 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
;
; Lcl frame size = 8
@@ -59,28 +57,30 @@ G_M5100_IG04: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
G_M5100_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbz x2, G_M5100_IG09
- mov x1, x19
- ; gcrRegs +[x1]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M5100_IG08
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2 x19]
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2]
+ ldr x1, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x1, x2
beq G_M5100_IG08
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M5100_IG07: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M5100_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x3
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1] +[x0]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M5100_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -99,7 +99,7 @@ G_M5100_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
b G_M5100_IG02
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 12, PerfScore 20.88, instruction count 39, allocated bytes for code 156 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 164, prolog size 12, PerfScore 20.00, instruction count 41, allocated bytes for code 164 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
Unwind Info:
@@ -110,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+32 (+5.48%) : 102614.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+ImplicitConversion:bindImplicitConversionToBase(Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType):ubyte:this (Tier1)
@@ -11,38 +11,36 @@
;
; V00 this [V00,T03] ( 11, 3 ) ref -> x20 this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+ImplicitConversion>
; V01 arg1 [V01,T01] ( 8, 7 ) ref -> x19 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
-; V02 loc0 [V02,T17] ( 4, 0 ) int -> x21
+; V02 loc0 [V02,T15] ( 4, 0 ) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T07] ( 2, 4 ) ref -> x0 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T02] ( 3, 5 ) ref -> x0 class-hnd "spilling QMark2" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
-; V06 tmp3 [V06,T14] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V07 tmp4 [V07,T00] ( 10, 12 ) ref -> x21 class-hnd single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
-; V08 tmp5 [V08,T20] ( 2, 0 ) int -> x0 "guarded devirt return temp"
-;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
-; V10 tmp7 [V10,T09] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
-; V11 tmp8 [V11,T15] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V12 tmp9 [V12,T12] ( 4, 2 ) ubyte -> x0 "Inline return value spill temp"
-; V13 tmp10 [V13,T11] ( 6, 2 ) ref -> x24 class-hnd "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
-; V14 tmp11 [V14,T18] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.Semantics.NullableType>
-; V15 tmp12 [V15,T13] ( 4, 2 ) int -> x23 "guarded devirt return temp"
-;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
-; V17 tmp14 [V17,T16] ( 3, 2 ) ubyte -> x23 "Inline return value spill temp"
-; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
-; V19 tmp16 [V19,T21] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
-;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.Expr>
-; V21 tmp18 [V21,T19] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V22 cse0 [V22,T06] ( 4, 4 ) int -> x0 "CSE - aggressive"
-; V23 cse1 [V23,T10] ( 3, 3 ) ref -> x21 "CSE - aggressive"
-; V24 cse2 [V24,T04] ( 7, 4 ) long -> x22 multi-def "CSE - aggressive"
-; V25 cse3 [V25,T05] ( 5, 4 ) long -> x23 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T12] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V05 tmp2 [V05,T00] ( 13, 14 ) ref -> x21 class-hnd single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
+; V06 tmp3 [V06,T18] ( 2, 0 ) int -> x0 "guarded devirt return temp"
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
+; V08 tmp5 [V08,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
+; V09 tmp6 [V09,T13] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V10 tmp7 [V10,T10] ( 4, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V11 tmp8 [V11,T09] ( 6, 2 ) ref -> x22 class-hnd "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
+; V12 tmp9 [V12,T16] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CSharp.RuntimeBinder.Semantics.NullableType>
+; V13 tmp10 [V13,T11] ( 4, 2 ) int -> x23 "guarded devirt return temp"
+;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
+; V15 tmp12 [V15,T14] ( 3, 2 ) ubyte -> x23 "Inline return value spill temp"
+; V16 tmp13 [V16,T05] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
+; V17 tmp14 [V17,T19] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
+;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.Expr>
+; V19 tmp16 [V19,T17] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V20 cse0 [V20,T04] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V21 cse1 [V21,T08] ( 3, 3 ) ref -> x21 "CSE - aggressive"
+; V22 rat0 [V22,T06] ( 2, 4 ) ref -> x0 "Spilling to split statement for tree"
+; V23 rat1 [V23,T02] ( 5, 7.50) ref -> x0 class-hnd "replacement local" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56129_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
@@ -54,45 +52,56 @@ G_M56129_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x21]
mov x0, x21
; gcrRegs +[x0]
- cbz x0, G_M56129_IG10
+ cbz x0, G_M56129_IG05
;; size=12 bbWeight=1 PerfScore 4.50
G_M56129_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr x22, [x0]
- movz x23, #0xD1FFAB1E
- movk x23, #0xD1FFAB1E LSL #16
- movk x23, #1 LSL #32
- cmp x22, x23
- bne G_M56129_IG10
+ ldr x1, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x1, x2
+ beq G_M56129_IG05
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M56129_IG04: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M56129_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- cbz x19, G_M56129_IG06
- cmp x22, x23
- bne G_M56129_IG05
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M56129_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M56129_IG11
+ cbz x19, G_M56129_IG07
+ ldr x0, [x21]
+ ; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M56129_IG06
ldr x0, [x21, #0x30]
; gcrRegs +[x0]
ldrb w1, [x0, #0x98]
- cbz w1, G_M56129_IG06
+ cbz w1, G_M56129_IG07
ldr w0, [x0, #0x94]
; gcrRegs -[x0]
cmp w0, #15
- bne G_M56129_IG06
- b G_M56129_IG12
- ;; size=40 bbWeight=1 PerfScore 15.00
-G_M56129_IG05: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ bne G_M56129_IG07
+ b G_M56129_IG13
+ ;; size=60 bbWeight=1 PerfScore 20.50
+G_M56129_IG06: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x21
; gcrRegs +[x0]
mov w1, #15
- ldr x2, [x22, #0x58]
+ ldr x2, [x21]
+ ldr x2, [x2, #0x58]
ldr x2, [x2, #0x28]
blr x2
; gcrRegs -[x0]
- cbnz w0, G_M56129_IG12
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M56129_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M56129_IG13
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M56129_IG07: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldrsb wzr, [x19]
cmp x19, x21
- beq G_M56129_IG12
+ beq G_M56129_IG13
mov x0, x19
; gcrRegs +[x0]
mov x1, x21
@@ -103,48 +112,48 @@ G_M56129_IG06: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- cbnz w0, G_M56129_IG12
- mov x24, x19
- ; gcrRegs +[x24]
- ldr x22, [x21]
- movz x23, #0xD1FFAB1E
- movk x23, #0xD1FFAB1E LSL #16
- movk x23, #1 LSL #32
- cmp x22, x23
- bne G_M56129_IG18
+ cbnz w0, G_M56129_IG13
+ mov x22, x19
+ ; gcrRegs +[x22]
+ ldr x0, [x21]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ bne G_M56129_IG19
ldr x0, [x21, #0x30]
; gcrRegs +[x0]
ldr w0, [x0, #0x90]
; gcrRegs -[x0]
cmp w0, #1
- beq G_M56129_IG17
+ beq G_M56129_IG18
cmp w0, #3
- beq G_M56129_IG17
+ beq G_M56129_IG18
cmp w0, #2
cset x23, eq
;; size=104 bbWeight=1 PerfScore 28.50
-G_M56129_IG07: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- cbnz w23, G_M56129_IG19
+G_M56129_IG08: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w23, G_M56129_IG20
;; size=4 bbWeight=1 PerfScore 1.00
-G_M56129_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21 x24]
+G_M56129_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21-x22]
mov w0, wzr
;; size=4 bbWeight=1 PerfScore 0.50
-G_M56129_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w0, G_M56129_IG12
+G_M56129_IG10: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M56129_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M56129_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56129_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
mov w0, wzr
;; size=4 bbWeight=1 PerfScore 0.50
-G_M56129_IG11: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
+G_M56129_IG12: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M56129_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 6.00
+G_M56129_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
mov w21, wzr
ldr x0, [x19, #0x30]
@@ -152,7 +161,7 @@ G_M56129_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
ldr w0, [x0, #0x90]
; gcrRegs -[x0]
cmp w0, #4
- bne G_M56129_IG13
+ bne G_M56129_IG14
ldr x0, [x20, #0x20]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -161,22 +170,22 @@ G_M56129_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000
blr x1
; gcrRegs -[x0 x19]
cmp w0, #11
- bne G_M56129_IG13
+ bne G_M56129_IG14
mov w21, #0xD1FFAB1E
- b G_M56129_IG14
+ b G_M56129_IG15
;; size=56 bbWeight=0 PerfScore 0.00
-G_M56129_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M56129_IG14: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x10]
; gcrRegs +[x1]
- cbz x1, G_M56129_IG14
+ cbz x1, G_M56129_IG15
ldr x1, [x20, #0x10]
ldr w1, [x1, #0x2C]
; gcrRegs -[x1]
and w21, w1, #0xD1FFAB1E
;; size=20 bbWeight=0 PerfScore 0.00
-G_M56129_IG14: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M56129_IG15: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x20, #0x2C]
- cbz w1, G_M56129_IG15
+ cbz w1, G_M56129_IG16
...
+16 (+8.33%) : 155314.dasm - System.Collections.Immutable.ImmutableDictionary2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
@@ -8,76 +8,75 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 56
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 6, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
-; V02 arg1 [V02,T01] ( 5, 4 ) byref -> x19 single-def
-; V03 loc0 [V03,T04] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
+; V00 TypeCtx [V00,T00] ( 6, 4 ) long -> x19 single-def
+; V01 arg0 [V01,T02] ( 4, 3 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
+; V02 arg1 [V02,T01] ( 5, 4 ) byref -> x20 single-def
+; V03 loc0 [V03,T03] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 6, 9 ) ref -> x15 class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 0 ) long -> x0 "argument with side effect"
-; V08 rat0 [V08,T05] ( 3, 0 ) long -> x0 "runtime lookup"
-; V09 rat1 [V09,T06] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp2 [V06,T06] ( 2, 0 ) long -> x0 "argument with side effect"
+; V07 rat0 [V07,T04] ( 3, 0 ) long -> x0 "runtime lookup"
+; V08 rat1 [V08,T05] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M59789_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x0, [fp, #0x18]
- mov x20, x1
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M59789_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x15, x20
+ str x0, [fp, #0x10]
+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M59789_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x0, x19
+ mov x1, x21
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ mov x15, x0
; gcrRegs +[x15]
- cbz x15, G_M59789_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59789_IG03: ; bbWeight=0.50, gcrefRegs=108000 {x15 x20}, byrefRegs=80000 {x19}, byref
- ldr x14, [x15]
- cmp x14, x0
- csel x15, x15, xzr, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M59789_IG04: ; bbWeight=1, gcrefRegs=108000 {x15 x20}, byrefRegs=80000 {x19}, byref, isz
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x1, [x19]
- ; gcrRegs +[x1]
- cbz x1, G_M59789_IG06
+ ldr x0, [x20]
+ ; gcrRegs +[x0]
+ cbz x0, G_M59789_IG04
mov w0, #1
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M59789_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=1 PerfScore 8.50
+G_M59789_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M59789_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x2, [x1, #0x50]
- cbz x2, G_M59789_IG07
- mov x0, x2
- b G_M59789_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M59789_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M59789_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, gcvars, byref, isz
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x50]
+ cbz x0, G_M59789_IG05
+ b G_M59789_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M59789_IG05: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+ mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M59789_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x1, x20
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M59789_IG06: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x1, x21
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1 x20] +[x0]
- cbz x0, G_M59789_IG10
+ ; gcrRegs -[x1 x21] +[x0]
+ cbz x0, G_M59789_IG08
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:ToImmutable():System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -85,28 +84,30 @@ G_M59789_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
blr x1
mov x15, x0
; gcrRegs +[x15]
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x19]
+ ; byrRegs -[x14 x20]
mov w0, #1
;; size=48 bbWeight=0 PerfScore 0.00
-G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+G_M59789_IG07: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M59789_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M59789_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M59789_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 17.00, instruction count 48, allocated bytes for code 192 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
+; Total bytes of code 208, prolog size 20, PerfScore 19.50, instruction count 52, allocated bytes for code 208 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -117,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -131,10 +132,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-28 (-46.67%) : 35965.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,37 +18,19 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M24927_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M24927_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M24927_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 140917.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-40.00%) : 30311.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
-; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,33 +19,21 @@ G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x1, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2
- ; gcrRegs +[x0]
- cbz x0, G_M29555_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- cmp x3, x1
- beq G_M29555_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
+ ldr x0, [x1, #0x38]
+ ldr x0, [x0]
mov x1, x2
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -58,7 +44,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+43.48%) : 92925.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)
@@ -8,26 +8,25 @@
; 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 -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
-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
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08]
; gcrRegs +[x0-x1]
ldrsb wzr, [x0]
@@ -38,11 +37,9 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)
@@ -50,26 +47,41 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
- brk_unix #0
- ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ ;; size=104 bbWeight=1 PerfScore 32.50
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x2
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (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 : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
+40 (+43.48%) : 93500.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)
@@ -8,26 +8,25 @@
; 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 -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
-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
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08]
; gcrRegs +[x0-x1]
ldrsb wzr, [x0]
@@ -38,11 +37,9 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)
@@ -50,26 +47,41 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
- brk_unix #0
- ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ ;; size=104 bbWeight=1 PerfScore 32.50
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x2
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (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 : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
+48 (+92.31%) : 92229.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,24 +8,24 @@
; 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 -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 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 -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V06 cse0 [V06,T02] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V04 cse0 [V04,T02] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
- ldrsb wzr, [x0]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -35,26 +35,46 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- brk_unix #0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ mov w1, wzr
+ movz x3, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #1 LSL #32
+ ldr x3, [x3]
+ ;; size=76 bbWeight=1 PerfScore 20.00
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x3
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 52, prolog size 8, PerfScore 0.00, instruction count 13, allocated bytes for code 52 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 26.50, instruction count 25, allocated bytes for code 100 (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
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ ---- Epilog start at index 1 ----
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
realworld.run.osx.arm64.checked.mch
-24 (-31.58%) : 31372.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,34 +21,22 @@ G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M56342_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M56342_IG05
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56342_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (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 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (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:
@@ -61,7 +47,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 404.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-25.93%) : 14790.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x20]
mov fp, sp
str x1, [fp, #0x18]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [x1, #0x38]
+ ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
- ldr x2, [x20]
+ mov x0, x19
+ ldr x2, [x19]
ldr x2, [x2, #0x70]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M60617_IG05
- ;; size=44 bbWeight=1 PerfScore 19.50
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M60617_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 28463.dasm - System.Dynamic.Utils.TypeUtils:IsIntegerOrBool(System.Type):ubyte (FullOpts)
@@ -9,23 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 7 ) ref -> x19 class-hnd <System.Type>
-; V01 loc0 [V01,T01] ( 3, 1.50) int -> x0
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 1 ) int -> x0 "Inline return value spill temp"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V03 tmp1 [V03,T01] ( 3, 1.50) int -> x0 "Inline return value spill temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "index expr"
;
; Lcl frame size = 8
+0 (0.00%) : 30407.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
@@ -23,19 +23,19 @@
; V12 loc3 [V12 ] ( 2, 1.50) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V13 loc4 [V13,T02] ( 9, 11 ) int -> x27
; V14 loc5 [V14,T11] ( 4, 6 ) ref -> x28 class-hnd exact single-def <System.Object[]>
-; V15 loc6 [V15,T41] ( 3, 2.50) ref -> x0 class-hnd single-def <System.Management.Automation.MethodInformation>
+; V15 loc6 [V15,T42] ( 3, 2.50) ref -> x0 class-hnd single-def <System.Management.Automation.MethodInformation>
; V16 loc7 [V16,T00] ( 12, 21.04) int -> [fp+0x3C]
; V17 loc8 [V17,T03] ( 6, 10 ) ref -> x2 class-hnd <System.Object>
-; V18 loc9 [V18,T07] ( 12, 6 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V19 loc10 [V19,T05] ( 18, 9 ) ref -> x20 class-hnd <System.Linq.Expressions.Expression>
+; V18 loc9 [V18,T06] ( 12, 6 ) ref -> x25 class-hnd single-def <<unknown class>>
+; V19 loc10 [V19,T07] ( 12, 6 ) ref -> x20 class-hnd <System.Linq.Expressions.Expression>
;* V20 loc11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V21 loc12 [V21,T65] ( 3, 1.50) ref -> x23 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
+; V21 loc12 [V21,T66] ( 3, 1.50) ref -> x23 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V23 tmp1 [V23 ] ( 0, 0 ) ref -> zero-ref
;* V24 tmp2 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp3 [V25 ] ( 0, 0 ) ref -> zero-ref
;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref
-; V27 tmp5 [V27,T06] ( 6, 8 ) ref -> x2
+; V27 tmp5 [V27,T05] ( 6, 8 ) ref -> x2
; V28 tmp6 [V28,T09] ( 6, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Type[]>
;* V29 tmp7 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V30 tmp8 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
@@ -44,15 +44,15 @@
;* V33 tmp11 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
; V34 tmp12 [V34,T13] ( 5, 5 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Object[]>
; V35 tmp13 [V35,T20] ( 4, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <System.Object[]>
-; V36 tmp14 [V36,T29] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V37 tmp15 [V37,T30] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V36 tmp14 [V36,T30] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V37 tmp15 [V37,T31] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
; V38 tmp16 [V38,T21] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Type>
;* V39 tmp17 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
-; V40 tmp18 [V40,T66] ( 3, 1.50) ref -> x23
-; V41 tmp19 [V41,T40] ( 5, 2.50) ref -> x23
-; V42 tmp20 [V42,T45] ( 2, 2 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V40 tmp18 [V40,T67] ( 3, 1.50) ref -> x23
+; V41 tmp19 [V41,T41] ( 5, 2.50) ref -> x23
+; V42 tmp20 [V42,T46] ( 2, 2 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V43 tmp21 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
-; V44 tmp22 [V44,T46] ( 2, 2 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
+; V44 tmp22 [V44,T47] ( 2, 2 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V45 tmp23 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
;* V46 tmp24 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V47 tmp25 [V47 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -60,67 +60,63 @@
;* V49 tmp27 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
;* V50 tmp28 [V50 ] ( 0, 0 ) ref -> zero-ref single-def
;* V51 tmp29 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
-; V52 tmp30 [V52,T42] ( 4, 2 ) ref -> x2
-; V53 tmp31 [V53,T26] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V52 tmp30 [V52,T43] ( 4, 2 ) ref -> x2
+; V53 tmp31 [V53,T27] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V54 tmp32 [V54,T71] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V55 tmp33 [V55,T31] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V56 tmp34 [V56,T27] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V55 tmp33 [V55,T32] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V56 tmp34 [V56,T28] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V57 tmp35 [V57,T72] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V58 tmp36 [V58,T32] ( 3, 3 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
+; V58 tmp36 [V58,T33] ( 3, 3 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
; V59 tmp37 [V59,T22] ( 4, 4 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Linq.Expressions.Expression[]>
-; V60 tmp38 [V60,T47] ( 2, 2 ) ref -> x27 class-hnd single-def "impAppendStmt" <System.Type>
-; V61 tmp39 [V61,T48] ( 2, 2 ) ref -> [fp+0x28] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
-; V62 tmp40 [V62,T49] ( 2, 2 ) ref -> [fp+0x20] class-hnd spill-single-def "non-inline candidate call" <System.Linq.Expressions.ConstantExpression>
+; V60 tmp38 [V60,T48] ( 2, 2 ) ref -> x27 class-hnd single-def "impAppendStmt" <System.Type>
+; V61 tmp39 [V61,T49] ( 2, 2 ) ref -> [fp+0x28] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V62 tmp40 [V62,T50] ( 2, 2 ) ref -> [fp+0x20] class-hnd spill-single-def "non-inline candidate call" <System.Linq.Expressions.ConstantExpression>
;* V63 tmp41 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
;* V64 tmp42 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Linq.Expressions.Expression>
-; V65 tmp43 [V65,T50] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V66 tmp44 [V66,T51] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.UnaryExpression>
-; V67 tmp45 [V67,T52] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.CatchBlock>
-; V68 tmp46 [V68,T33] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V69 tmp47 [V69,T34] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V70 tmp48 [V70,T28] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V65 tmp43 [V65,T51] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V66 tmp44 [V66,T52] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.UnaryExpression>
+; V67 tmp45 [V67,T53] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.CatchBlock>
+; V68 tmp46 [V68,T34] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V69 tmp47 [V69,T35] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V70 tmp48 [V70,T29] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V71 tmp49 [V71,T73] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V72 tmp50 [V72,T14] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V73 tmp51 [V73,T35] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-; V74 tmp52 [V74,T36] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-; V75 tmp53 [V75,T53] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V76 tmp54 [V76,T67] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression>
+; V73 tmp51 [V73,T36] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V74 tmp52 [V74,T37] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V75 tmp53 [V75,T54] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V76 tmp54 [V76,T24] ( 7, 3.50) ref -> x20 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression>
; V77 tmp55 [V77,T10] ( 6, 6 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
; V78 tmp56 [V78,T23] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type>
-; V79 tmp57 [V79,T43] ( 4, 2 ) int -> x20 "Inline return value spill temp"
-;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V81 tmp59 [V81 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V82 tmp60 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V83 tmp61 [V83 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V84 tmp62 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V85 tmp63 [V85 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V86 tmp64 [V86 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V88 tmp66 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Assembly>
-; V89 tmp67 [V89,T70] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V90 tmp68 [V90,T37] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Attribute[]>
-; V91 tmp69 [V91 ] ( 2, 1 ) int -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;* V92 tmp70 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V93 tmp71 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V94 tmp72 [V94,T54] ( 2, 2 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V95 tmp73 [V95,T38] ( 3, 3 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-;* V96 tmp74 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V97 tmp75 [V97,T55] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V98 tmp76 [V98,T56] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V99 tmp77 [V99,T57] ( 2, 2 ) ref -> x3 single-def "argument with side effect"
-; V100 tmp78 [V100,T58] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V101 tmp79 [V101,T59] ( 2, 2 ) ref -> x0 single-def "arr expr"
-; V102 tmp80 [V102,T39] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V103 tmp81 [V103,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V104 tmp82 [V104,T61] ( 2, 2 ) ref -> x19 single-def "argument with side effect"
-; V105 tmp83 [V105,T62] ( 2, 2 ) ref -> x5 single-def "argument with side effect"
-; V106 tmp84 [V106,T63] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V107 tmp85 [V107,T64] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V108 cse0 [V108,T12] ( 4, 5.04) ref -> [fp+0x10] hoist multi-def "CSE - aggressive"
-; V109 cse1 [V109,T25] ( 7, 3.50) long -> x22 "CSE - moderate"
-; V110 cse2 [V110,T44] ( 4, 2 ) long -> x24 "CSE - conservative"
-; V111 cse3 [V111,T68] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V112 cse4 [V112,T24] ( 7, 3.50) ref -> x23 multi-def "CSE - moderate"
+; V79 tmp57 [V79,T44] ( 4, 2 ) int -> x20 "Inline return value spill temp"
+;* V80 tmp58 [V80 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V81 tmp59 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V82 tmp60 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V83 tmp61 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Assembly>
+; V84 tmp62 [V84,T70] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V85 tmp63 [V85,T38] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Attribute[]>
+; V86 tmp64 [V86 ] ( 2, 1 ) int -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;* V87 tmp65 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V88 tmp66 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V89 tmp67 [V89,T55] ( 2, 2 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
+; V90 tmp68 [V90,T39] ( 3, 3 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+;* V91 tmp69 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
+; V92 tmp70 [V92,T56] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V93 tmp71 [V93,T57] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V94 tmp72 [V94,T58] ( 2, 2 ) ref -> x3 single-def "argument with side effect"
+; V95 tmp73 [V95,T59] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+;* V96 tmp74 [V96 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V97 tmp75 [V97,T60] ( 2, 2 ) ref -> x0 single-def "arr expr"
+; V98 tmp76 [V98,T40] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V99 tmp77 [V99,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V100 tmp78 [V100,T62] ( 2, 2 ) ref -> x19 single-def "argument with side effect"
+; V101 tmp79 [V101,T63] ( 2, 2 ) ref -> x5 single-def "argument with side effect"
+; V102 tmp80 [V102,T64] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V103 tmp81 [V103,T65] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V104 cse0 [V104,T12] ( 4, 5.04) ref -> [fp+0x10] hoist multi-def "CSE - aggressive"
+; V105 cse1 [V105,T26] ( 7, 3.50) long -> x22 "CSE - moderate"
+; V106 cse2 [V106,T45] ( 4, 2 ) long -> x24 "CSE - conservative"
+; V107 cse3 [V107,T68] ( 3, 1.50) long -> x26 "CSE - conservative"
+; V108 cse4 [V108,T25] ( 7, 3.50) ref -> x23 multi-def "CSE - moderate"
;
; Lcl frame size = 80
@@ -177,10 +173,10 @@ G_M1658_IG02: ; bbWeight=1, gcrefRegs=7E80000 {x19 x21 x22 x23 x24 x25 x2
movk x0, #2 LSL #32
ldr x2, [x0]
; gcrRegs +[x2]
- str x2, [fp, #0x10] // [V108 cse0]
- ; GC ptr vars +{V108}
+ str x2, [fp, #0x10] // [V104 cse0]
+ ; GC ptr vars +{V104}
;; size=84 bbWeight=1 PerfScore 20.00
-G_M1658_IG03: ; bbWeight=3.96, gcVars=00000000000000000000000000001000 {V108}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M1658_IG03: ; bbWeight=3.96, gcVars=00000000000000000000000000001000 {V104}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x2]
add x0, x19, #16
; byrRegs +[x0]
@@ -196,7 +192,7 @@ G_M1658_IG03: ; bbWeight=3.96, gcVars=00000000000000000000000000001000 {V
blr x3
mov x2, x0
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V108 cse0]
+ ldr x3, [fp, #0x10] // [V104 cse0]
; gcrRegs +[x3]
cmp x2, x3
beq G_M1658_IG05
@@ -222,7 +218,7 @@ G_M1658_IG06: ; bbWeight=3.96, gcrefRegs=17E80004 {x2 x19 x21 x22 x23 x24
blt G_M1658_IG03
;; size=28 bbWeight=3.96 PerfScore 29.70
G_M1658_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V108}
+ ; GC ptr vars -{V104}
b G_M1658_IG12
;; size=4 bbWeight=1 PerfScore 1.00
G_M1658_IG08: ; bbWeight=0.04, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
@@ -690,7 +686,7 @@ G_M1658_IG30: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byref
blr x3
mov x23, x0
; gcrRegs +[x23]
- add x2, fp, #48 // [V91 tmp69]
+ add x2, fp, #48 // [V86 tmp64]
mov x1, x23
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -718,7 +714,7 @@ G_M1658_IG30: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byref
b G_M1658_IG32
;; size=152 bbWeight=0.50 PerfScore 20.00
G_M1658_IG31: ; bbWeight=0.50, gcrefRegs=2380000 {x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #0x30] // [V91 tmp69]
+ ldr w0, [fp, #0x30] // [V86 tmp64]
cbz w0, G_M1658_IG35
b G_M1658_IG33
;; size=12 bbWeight=0.50 PerfScore 2.00
@@ -859,8 +855,8 @@ G_M1658_IG36: ; bbWeight=0.50, gcrefRegs=2B80000 {x19 x20 x21 x23 x25}, b
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- str x1, [fp, #0x18] // [V95 tmp73]
- ; GC ptr vars +{V95}
+ str x1, [fp, #0x18] // [V90 tmp68]
+ ; GC ptr vars +{V90}
add x14, x1, #8
; byrRegs +[x14]
mov x15, x22
@@ -891,7 +887,7 @@ G_M1658_IG36: ; bbWeight=0.50, gcrefRegs=2B80000 {x19 x20 x21 x23 x25}, b
; gcrRegs +[x5]
mov x4, x19
; gcrRegs +[x4]
- ldp x3, x2, [fp, #0x18] // [V95 tmp73], [V62 tmp40]
+ ldp x3, x2, [fp, #0x18] // [V90 tmp68], [V62 tmp40]
; gcrRegs +[x2-x3]
ldr x0, [fp, #0x28] // [V61 tmp39]
mov x1, x23
@@ -900,7 +896,7 @@ G_M1658_IG36: ; bbWeight=0.50, gcrefRegs=2B80000 {x19 x20 x21 x23 x25}, b
movk x6, #0xD1FFAB1E LSL #16
movk x6, #1 LSL #32
ldr x6, [x6]
- ; GC ptr vars -{V61 V62 V95}
+ ; GC ptr vars -{V61 V62 V90}
blr x6
; gcrRegs -[x1-x5 x19]
mov x15, x0
+16 (+4.35%) : 4743.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
@@ -16,27 +16,27 @@
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall"
-;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall"
-;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect"
-; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect"
-; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive"
-; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
-; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect"
+; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect"
+; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect"
+; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect"
+; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect"
+; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive"
+; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup"
+; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
+; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
+; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup"
+; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
+; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG13
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16
- b G_M31693_IG17
+ cbz x0, G_M31693_IG14
+ b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20
- b G_M31693_IG21
+ cbz x0, G_M31693_IG17
+ b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
@@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -206,7 +200,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
290 |
286 |
4 |
0 |
-7,268 |
+112 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
24 |
18 |
6 |
0 |
-512 |
+72 |
| coreclr_tests.run.osx.arm64.checked.mch |
174 |
149 |
5 |
20 |
-3,940 |
+292 |
| libraries.crossgen2.osx.arm64.checked.mch |
1,097 |
1,087 |
3 |
7 |
-38,396 |
+12 |
| libraries.pmi.osx.arm64.checked.mch |
616 |
588 |
9 |
19 |
-18,436 |
+244 |
| libraries_tests.run.osx.arm64.Release.mch |
1,014 |
870 |
125 |
19 |
-24,672 |
+3,508 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
755 |
712 |
17 |
26 |
-23,080 |
+368 |
| realworld.run.osx.arm64.checked.mch |
115 |
108 |
1 |
6 |
-3,096 |
+16 |
|
4,085 |
3,818 |
170 |
97 |
-119,400 |
+4,624 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run_pgo.osx.arm64.checked.mch |
82,407 |
48,345 |
34,062 |
183 (0.22%) |
2,419 (2.85%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
47,808 |
37,331 |
10,477 |
63 (0.13%) |
508 (1.05%) |
| coreclr_tests.run.osx.arm64.checked.mch |
577,475 |
358,028 |
219,447 |
437 (0.07%) |
9,110 (1.55%) |
| libraries.crossgen2.osx.arm64.checked.mch |
233,753 |
15 |
233,738 |
0 (0.00%) |
7 (0.00%) |
| libraries.pmi.osx.arm64.checked.mch |
285,049 |
18 |
285,031 |
2,034 (0.64%) |
30,567 (9.68%) |
| libraries_tests.run.osx.arm64.Release.mch |
603,872 |
462,062 |
141,810 |
965 (0.15%) |
28,385 (4.49%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
260,958 |
21,558 |
239,400 |
2,087 (0.69%) |
42,156 (13.91%) |
| realworld.run.osx.arm64.checked.mch |
27,066 |
3 |
27,063 |
326 (1.03%) |
4,477 (14.19%) |
|
2,118,388 |
927,360 |
1,191,028 |
6,095 (0.27%) |
117,629 (5.26%) |
jit-analyze output
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31783628 (overridden on cmd)
Total bytes of diff: 31776472 (overridden on cmd)
Total bytes of delta: -7156 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 76226.dasm (2.35 % of base)
36 : 7622.dasm (1.96 % of base)
16 : 59171.dasm (6.45 % of base)
16 : 77318.dasm (6.45 % of base)
Top file improvements (bytes):
-396 : 58096.dasm (-8.60 % of base)
-56 : 63870.dasm (-5.30 % of base)
-44 : 25289.dasm (-9.57 % of base)
-44 : 12296.dasm (-9.57 % of base)
-32 : 12295.dasm (-6.15 % of base)
-32 : 25288.dasm (-6.15 % of base)
-28 : 43861.dasm (-3.30 % of base)
-28 : 58046.dasm (-8.43 % of base)
-28 : 18931.dasm (-28.00 % of base)
-28 : 39909.dasm (-3.30 % of base)
-28 : 42805.dasm (-3.30 % of base)
-28 : 57187.dasm (-9.46 % of base)
-28 : 59164.dasm (-3.30 % of base)
-24 : 30621.dasm (-2.82 % of base)
-24 : 39208.dasm (-2.82 % of base)
-24 : 42368.dasm (-2.82 % of base)
-24 : 45370.dasm (-5.22 % of base)
-24 : 67768.dasm (-2.82 % of base)
-24 : 72136.dasm (-2.82 % of base)
-24 : 75088.dasm (-2.82 % of base)
56 total files with Code Size differences (52 improved, 4 regressed), 0 unchanged.
Top method regressions (bytes):
44 (2.35 % of base) : 76226.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
36 (1.96 % of base) : 7622.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
16 (6.45 % of base) : 59171.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
16 (6.45 % of base) : 77318.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
Top method improvements (bytes):
-396 (-8.60 % of base) : 58096.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-56 (-5.30 % of base) : 63870.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-44 (-9.57 % of base) : 25289.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-44 (-9.57 % of base) : 12296.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-32 (-6.15 % of base) : 12295.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.15 % of base) : 25288.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-9.46 % of base) : 57187.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-8.43 % of base) : 58046.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-28 (-28.00 % of base) : 18931.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-3.30 % of base) : 43861.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 39909.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 42805.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 59164.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-24 (-13.64 % of base) : 64285.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-24 (-10.71 % of base) : 64601.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-17.14 % of base) : 56661.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-24 (-5.22 % of base) : 45370.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-24 (-5.22 % of base) : 58724.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-24 (-2.82 % of base) : 30621.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-24 (-2.82 % of base) : 39208.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
16 (6.45 % of base) : 59171.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
16 (6.45 % of base) : 77318.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
44 (2.35 % of base) : 76226.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
36 (1.96 % of base) : 7622.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
Top method improvements (percentages):
-28 (-28.00 % of base) : 18931.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-24 (-17.14 % of base) : 56661.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-24 (-13.64 % of base) : 64285.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-24 (-10.71 % of base) : 64601.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-44 (-9.57 % of base) : 25289.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-44 (-9.57 % of base) : 12296.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-28 (-9.46 % of base) : 57187.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-396 (-8.60 % of base) : 58096.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-28 (-8.43 % of base) : 58046.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-32 (-6.15 % of base) : 12295.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.15 % of base) : 25288.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-20 (-6.10 % of base) : 22547.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-16 (-5.41 % of base) : 64032.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-56 (-5.30 % of base) : 63870.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-24 (-5.22 % of base) : 45370.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-24 (-5.22 % of base) : 58724.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-24 (-4.48 % of base) : 28518.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 43861.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 39909.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 42805.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
benchmarks.run_tiered.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15053964 (overridden on cmd)
Total bytes of diff: 15053524 (overridden on cmd)
Total bytes of delta: -440 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 28458.dasm (7.32 % of base)
12 : 47250.dasm (7.32 % of base)
12 : 30296.dasm (7.32 % of base)
12 : 46738.dasm (7.32 % of base)
12 : 47134.dasm (7.32 % of base)
12 : 23797.dasm (7.32 % of base)
Top file improvements (bytes):
-52 : 19938.dasm (-12.87 % of base)
-44 : 41314.dasm (-16.18 % of base)
-40 : 41416.dasm (-12.50 % of base)
-36 : 41239.dasm (-15.00 % of base)
-28 : 38982.dasm (-4.27 % of base)
-28 : 9521.dasm (-25.93 % of base)
-28 : 3535.dasm (-28.00 % of base)
-28 : 39016.dasm (-12.73 % of base)
-28 : 41284.dasm (-15.91 % of base)
-24 : 41231.dasm (-5.56 % of base)
-24 : 42172.dasm (-6.45 % of base)
-24 : 3081.dasm (-4.51 % of base)
-24 : 39625.dasm (-11.11 % of base)
-24 : 39076.dasm (-17.14 % of base)
-24 : 41505.dasm (-13.95 % of base)
-20 : 6437.dasm (-6.10 % of base)
-20 : 19942.dasm (-5.95 % of base)
-16 : 41619.dasm (-7.84 % of base)
24 total files with Code Size differences (18 improved, 6 regressed), 0 unchanged.
Top method regressions (bytes):
12 (7.32 % of base) : 47134.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
12 (7.32 % of base) : 47250.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
12 (7.32 % of base) : 23797.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
12 (7.32 % of base) : 28458.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
12 (7.32 % of base) : 30296.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
12 (7.32 % of base) : 46738.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (bytes):
-52 (-12.87 % of base) : 19938.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-44 (-16.18 % of base) : 41314.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-40 (-12.50 % of base) : 41416.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-36 (-15.00 % of base) : 41239.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-4.27 % of base) : 38982.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
-28 (-12.73 % of base) : 39016.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-28 (-15.91 % of base) : 41284.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-28 (-28.00 % of base) : 3535.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-25.93 % of base) : 9521.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-24 (-13.95 % of base) : 41505.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-24 (-17.14 % of base) : 39076.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-24 (-11.11 % of base) : 39625.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-24 (-6.45 % of base) : 42172.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-24 (-5.56 % of base) : 41231.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-24 (-4.51 % of base) : 3081.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-6.10 % of base) : 6437.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-20 (-5.95 % of base) : 19942.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
-16 (-7.84 % of base) : 41619.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
Top method regressions (percentages):
12 (7.32 % of base) : 47134.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
12 (7.32 % of base) : 47250.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
12 (7.32 % of base) : 23797.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
12 (7.32 % of base) : 28458.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
12 (7.32 % of base) : 30296.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
12 (7.32 % of base) : 46738.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (percentages):
-28 (-28.00 % of base) : 3535.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-25.93 % of base) : 9521.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-24 (-17.14 % of base) : 39076.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-44 (-16.18 % of base) : 41314.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-15.91 % of base) : 41284.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-36 (-15.00 % of base) : 41239.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-13.95 % of base) : 41505.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-52 (-12.87 % of base) : 19938.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-12.73 % of base) : 39016.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-40 (-12.50 % of base) : 41416.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-11.11 % of base) : 39625.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-16 (-7.84 % of base) : 41619.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-24 (-6.45 % of base) : 42172.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-20 (-6.10 % of base) : 6437.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-20 (-5.95 % of base) : 19942.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
-24 (-5.56 % of base) : 41231.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-24 (-4.51 % of base) : 3081.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-4.27 % of base) : 38982.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
24 total methods with Code Size differences (18 improved, 6 regressed).
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 453139932 (overridden on cmd)
Total bytes of diff: 453136284 (overridden on cmd)
Total bytes of delta: -3648 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 3101.dasm (0.93 % of base)
104 : 3080.dasm (0.86 % of base)
60 : 194740.dasm (300.00 % of base)
12 : 253217.dasm (1.19 % of base)
4 : 474799.dasm (0.79 % of base)
Top file improvements (bytes):
-80 : 197.dasm (-5.81 % of base)
-64 : 245616.dasm (-38.10 % of base)
-56 : 473997.dasm (-19.44 % of base)
-52 : 202209.dasm (-5.06 % of base)
-52 : 382.dasm (-4.22 % of base)
-52 : 192.dasm (-4.30 % of base)
-48 : 182322.dasm (-21.82 % of base)
-48 : 202235.dasm (-10.53 % of base)
-44 : 184598.dasm (-13.41 % of base)
-44 : 201058.dasm (-16.18 % of base)
-44 : 465395.dasm (-6.96 % of base)
-44 : 474404.dasm (-6.92 % of base)
-44 : 506831.dasm (-6.92 % of base)
-44 : 585068.dasm (-6.92 % of base)
-44 : 184619.dasm (-23.40 % of base)
-44 : 184597.dasm (-23.40 % of base)
-44 : 184621.dasm (-13.41 % of base)
-40 : 198999.dasm (-12.50 % of base)
-40 : 197531.dasm (-4.81 % of base)
-40 : 200215.dasm (-8.06 % of base)
49 total files with Code Size differences (44 improved, 5 regressed), 20 unchanged.
Top method regressions (bytes):
112 (0.93 % of base) : 3101.dasm - Program:TestCase0003() (FullOpts)
104 (0.86 % of base) : 3080.dasm - Program:TestCase0003() (FullOpts)
60 (300.00 % of base) : 194740.dasm - T:TestEntryPoint():int (FullOpts)
12 (1.19 % of base) : 253217.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
4 (0.79 % of base) : 474799.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
Top method improvements (bytes):
-80 (-5.81 % of base) : 197.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-64 (-38.10 % of base) : 245616.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-56 (-19.44 % of base) : 473997.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-52 (-4.30 % of base) : 192.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-52 (-4.22 % of base) : 382.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-52 (-5.06 % of base) : 202209.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-48 (-10.53 % of base) : 202235.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-48 (-21.82 % of base) : 182322.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-44 (-16.18 % of base) : 201058.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-23.40 % of base) : 184619.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-13.41 % of base) : 184621.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-23.40 % of base) : 184597.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-13.41 % of base) : 184598.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-6.96 % of base) : 465395.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 474404.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 506831.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 585068.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-40 (-4.81 % of base) : 197531.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-40 (-12.50 % of base) : 198999.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-40 (-8.06 % of base) : 200215.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
Top method regressions (percentages):
60 (300.00 % of base) : 194740.dasm - T:TestEntryPoint():int (FullOpts)
12 (1.19 % of base) : 253217.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
112 (0.93 % of base) : 3101.dasm - Program:TestCase0003() (FullOpts)
104 (0.86 % of base) : 3080.dasm - Program:TestCase0003() (FullOpts)
4 (0.79 % of base) : 474799.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
Top method improvements (percentages):
-24 (-40.00 % of base) : 215891.dasm - Program:CastToArray(System.Object):int[] (Tier1)
-64 (-38.10 % of base) : 245616.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-24 (-28.57 % of base) : 311801.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-28.00 % of base) : 310990.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-28.00 % of base) : 317558.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-44 (-23.40 % of base) : 184619.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-23.40 % of base) : 184597.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-48 (-21.82 % of base) : 182322.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-21.21 % of base) : 311954.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-24 (-20.00 % of base) : 293086.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-20 (-20.00 % of base) : 251756.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-28 (-20.00 % of base) : 310253.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-20 (-20.00 % of base) : 473990.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-56 (-19.44 % of base) : 473997.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-28 (-18.92 % of base) : 217548.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-28 (-18.92 % of base) : 249657.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-20 (-17.86 % of base) : 197742.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-32 (-17.78 % of base) : 474041.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-28 (-17.50 % of base) : 292026.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (FullOpts)
-28 (-17.50 % of base) : 181087.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
libraries.crossgen2.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55655940 (overridden on cmd)
Total bytes of diff: 55617556 (overridden on cmd)
Total bytes of delta: -38384 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 167937.dasm (1.09 % of base)
4 : 191458.dasm (1.09 % of base)
4 : 12336.dasm (1.09 % of base)
Top file improvements (bytes):
-384 : 208229.dasm (-15.76 % of base)
-360 : 208228.dasm (-15.68 % of base)
-336 : 208226.dasm (-15.58 % of base)
-320 : 152899.dasm (-20.36 % of base)
-320 : 108744.dasm (-13.91 % of base)
-312 : 208224.dasm (-15.48 % of base)
-288 : 208222.dasm (-15.35 % of base)
-264 : 208220.dasm (-15.21 % of base)
-240 : 208218.dasm (-15.04 % of base)
-216 : 208216.dasm (-14.84 % of base)
-216 : 80436.dasm (-17.14 % of base)
-216 : 80437.dasm (-16.77 % of base)
-192 : 208214.dasm (-14.59 % of base)
-176 : 76878.dasm (-47.31 % of base)
-168 : 208212.dasm (-14.29 % of base)
-156 : 76893.dasm (-40.21 % of base)
-144 : 208046.dasm (-9.00 % of base)
-144 : 208210.dasm (-13.90 % of base)
-140 : 79356.dasm (-14.71 % of base)
-136 : 208192.dasm (-10.76 % of base)
70 total files with Code Size differences (67 improved, 3 regressed), 7 unchanged.
Top method regressions (bytes):
4 (1.09 % of base) : 167937.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 191458.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 12336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
Top method improvements (bytes):
-384 (-15.76 % of base) : 208229.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)
-360 (-15.68 % of base) : 208228.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)
-336 (-15.58 % of base) : 208226.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)
-320 (-20.36 % of base) : 152899.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-320 (-13.91 % of base) : 108744.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-312 (-15.48 % of base) : 208224.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)
-288 (-15.35 % of base) : 208222.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)
-264 (-15.21 % of base) : 208220.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)
-240 (-15.04 % of base) : 208218.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)
-216 (-14.84 % of base) : 208216.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)
-216 (-17.14 % of base) : 80436.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-216 (-16.77 % of base) : 80437.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-192 (-14.59 % of base) : 208214.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)
-176 (-47.31 % of base) : 76878.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-168 (-14.29 % of base) : 208212.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)
-156 (-40.21 % of base) : 76893.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-144 (-13.90 % of base) : 208210.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)
-144 (-9.00 % of base) : 208046.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)
-140 (-14.71 % of base) : 79356.dasm - Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Equals(Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]):ubyte:this (FullOpts)
-136 (-10.76 % of base) : 208192.dasm - RailwaySharp.ErrorHandling.Trial:Apply[System.__Canon,System.__Canon,System.__Canon](RailwaySharp.ErrorHandling.Result`2[System.Func`2[System.__Canon,System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon] (FullOpts)
Top method regressions (percentages):
4 (1.09 % of base) : 167937.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 191458.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 12336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
Top method improvements (percentages):
-176 (-47.31 % of base) : 76878.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-156 (-40.21 % of base) : 76893.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-36 (-34.62 % of base) : 80882.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
-36 (-34.62 % of base) : 80405.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-34.62 % of base) : 150713.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-33.33 % of base) : 108808.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 13404.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 168982.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 209610.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-36 (-32.14 % of base) : 233710.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)
-36 (-32.14 % of base) : 180096.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-32 (-30.77 % of base) : 150735.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-48 (-28.57 % of base) : 150037.dasm - System.Text.Json.Serialization.Converters.ArrayConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-36 (-28.12 % of base) : 224398.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 194189.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)
-36 (-28.12 % of base) : 194342.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+<>c[System.__Canon]:<ConsumeAsyncIfNecessary>b__18_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 194401.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<CompleteBlockIfPossible_Slow>b__32_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 194242.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1+<>c[System.__Canon]:<OfferToTargetAsync>b__16_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 194353.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<OfferAsyncIfNecessary_Slow>b__44_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 194398.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__42_0(System.Object):this (FullOpts)
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59082992 (overridden on cmd)
Total bytes of diff: 59064800 (overridden on cmd)
Total bytes of delta: -18192 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
116 : 154417.dasm (4.86 % of base)
72 : 147580.dasm (2.65 % of base)
16 : 97003.dasm (4.35 % of base)
16 : 274722.dasm (1.17 % of base)
8 : 231597.dasm (2.17 % of base)
4 : 15170.dasm (0.42 % of base)
4 : 224719.dasm (2.70 % of base)
4 : 228084.dasm (0.93 % of base)
4 : 232970.dasm (0.07 % of base)
Top file improvements (bytes):
-600 : 291093.dasm (-25.17 % of base)
-320 : 132661.dasm (-19.32 % of base)
-316 : 245192.dasm (-17.14 % of base)
-264 : 302961.dasm (-36.46 % of base)
-180 : 110188.dasm (-22.61 % of base)
-180 : 110195.dasm (-21.84 % of base)
-172 : 196888.dasm (-8.57 % of base)
-168 : 197531.dasm (-42.00 % of base)
-120 : 110358.dasm (-18.29 % of base)
-120 : 110349.dasm (-18.99 % of base)
-116 : 25117.dasm (-11.11 % of base)
-112 : 222811.dasm (-1.83 % of base)
-96 : 232498.dasm (-10.67 % of base)
-80 : 253610.dasm (-1.73 % of base)
-72 : 305372.dasm (-13.74 % of base)
-72 : 197452.dasm (-34.62 % of base)
-72 : 239894.dasm (-14.88 % of base)
-68 : 305365.dasm (-14.17 % of base)
-64 : 233361.dasm (-23.88 % of base)
-60 : 32501.dasm (-20.55 % of base)
61 total files with Code Size differences (52 improved, 9 regressed), 19 unchanged.
Top method regressions (bytes):
116 (4.86 % of base) : 154417.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
72 (2.65 % of base) : 147580.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
16 (4.35 % of base) : 97003.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
16 (1.17 % of base) : 274722.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
8 (2.17 % of base) : 231597.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
4 (0.93 % of base) : 228084.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
4 (2.70 % of base) : 224719.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (0.07 % of base) : 232970.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
4 (0.42 % of base) : 15170.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
Top method improvements (bytes):
-600 (-25.17 % of base) : 291093.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-320 (-19.32 % of base) : 132661.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-316 (-17.14 % of base) : 245192.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-264 (-36.46 % of base) : 302961.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-180 (-22.61 % of base) : 110188.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-180 (-21.84 % of base) : 110195.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-172 (-8.57 % of base) : 196888.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-168 (-42.00 % of base) : 197531.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-120 (-18.29 % of base) : 110358.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-120 (-18.99 % of base) : 110349.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-116 (-11.11 % of base) : 25117.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-112 (-1.83 % of base) : 222811.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-96 (-10.67 % of base) : 232498.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
-80 (-1.73 % of base) : 253610.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-72 (-14.88 % of base) : 239894.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-72 (-13.74 % of base) : 305372.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Xml.Serialization.XmlSerializer):System.__Canon:this (FullOpts)
-72 (-34.62 % of base) : 197452.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-68 (-14.17 % of base) : 305365.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Runtime.Serialization.XmlObjectSerializer):System.__Canon:this (FullOpts)
-64 (-23.88 % of base) : 233361.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts)
-60 (-20.55 % of base) : 32501.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
116 (4.86 % of base) : 154417.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
16 (4.35 % of base) : 97003.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
4 (2.70 % of base) : 224719.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
72 (2.65 % of base) : 147580.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
8 (2.17 % of base) : 231597.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
16 (1.17 % of base) : 274722.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
4 (0.93 % of base) : 228084.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
4 (0.42 % of base) : 15170.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
4 (0.07 % of base) : 232970.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 109920.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-46.67 % of base) : 251012.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-168 (-42.00 % of base) : 197531.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-264 (-36.46 % of base) : 302961.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-72 (-34.62 % of base) : 197452.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-40 (-33.33 % of base) : 269215.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-24 (-31.58 % of base) : 311280.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)
-24 (-30.00 % of base) : 236368.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-32 (-28.57 % of base) : 25975.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-32 (-28.57 % of base) : 276240.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-28.57 % of base) : 276254.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 220545.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-28 (-28.00 % of base) : 308.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-32 (-27.59 % of base) : 294721.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-32 (-27.59 % of base) : 253042.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
-32 (-27.59 % of base) : 253051.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
-24 (-27.27 % of base) : 25642.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
-24 (-27.27 % of base) : 242210.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
-24 (-27.27 % of base) : 242097.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
-28 (-26.92 % of base) : 194727.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 273947472 (overridden on cmd)
Total bytes of diff: 273926308 (overridden on cmd)
Total bytes of delta: -21164 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 488375.dasm (8.70 % of base)
48 : 84351.dasm (1.25 % of base)
44 : 622960.dasm (1.15 % of base)
44 : 233004.dasm (1.22 % of base)
44 : 119355.dasm (1.11 % of base)
44 : 299426.dasm (1.11 % of base)
44 : 420357.dasm (1.15 % of base)
44 : 488791.dasm (1.15 % of base)
44 : 609918.dasm (1.22 % of base)
44 : 616698.dasm (1.15 % of base)
40 : 279991.dasm (1.11 % of base)
40 : 308004.dasm (1.16 % of base)
40 : 322796.dasm (1.15 % of base)
40 : 344711.dasm (1.11 % of base)
40 : 415035.dasm (1.05 % of base)
40 : 488760.dasm (1.15 % of base)
40 : 577724.dasm (1.11 % of base)
40 : 577839.dasm (1.14 % of base)
40 : 186120.dasm (1.16 % of base)
40 : 322100.dasm (1.03 % of base)
Top file improvements (bytes):
-168 : 560725.dasm (-2.38 % of base)
-116 : 560332.dasm (-2.22 % of base)
-108 : 466374.dasm (-6.04 % of base)
-108 : 471673.dasm (-6.04 % of base)
-108 : 601152.dasm (-3.15 % of base)
-104 : 381465.dasm (-4.77 % of base)
-88 : 529416.dasm (-0.94 % of base)
-84 : 466373.dasm (-21.21 % of base)
-80 : 471971.dasm (-8.20 % of base)
-80 : 557282.dasm (-0.92 % of base)
-72 : 273116.dasm (-10.47 % of base)
-68 : 341146.dasm (-4.15 % of base)
-64 : 292927.dasm (-19.05 % of base)
-60 : 529456.dasm (-14.29 % of base)
-60 : 157690.dasm (-1.41 % of base)
-60 : 394750.dasm (-2.01 % of base)
-60 : 558012.dasm (-14.29 % of base)
-60 : 57544.dasm (-1.27 % of base)
-56 : 578220.dasm (-20.29 % of base)
-56 : 168685.dasm (-2.31 % of base)
85 total files with Code Size differences (50 improved, 35 regressed), 19 unchanged.
Top method regressions (bytes):
112 (8.70 % of base) : 488375.dasm - Moq.Extensions:IsOrContainsTypeMatcher(System.Type):ubyte (Tier1)
48 (1.25 % of base) : 84351.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 622960.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 233004.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.11 % of base) : 119355.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.11 % of base) : 299426.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 420357.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 488791.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 609918.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 616698.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.11 % of base) : 279991.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.11 % of base) : 344711.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.05 % of base) : 415035.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.11 % of base) : 577724.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.03 % of base) : 322100.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.16 % of base) : 308004.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.15 % of base) : 322796.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.15 % of base) : 488760.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.14 % of base) : 577839.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.16 % of base) : 186120.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method improvements (bytes):
-168 (-2.38 % of base) : 560725.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.GenericStructIDictionaryWrapper`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-116 (-2.22 % of base) : 560332.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-108 (-3.15 % of base) : 601152.dasm - Microsoft.CodeAnalysis.CodeGen.PrivateImplementationDetails:Freeze():this (Tier1)
-108 (-6.04 % of base) : 466374.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-108 (-6.04 % of base) : 471673.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-104 (-4.77 % of base) : 381465.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
-88 (-0.94 % of base) : 529416.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-84 (-21.21 % of base) : 466373.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2):System.__Canon (Tier1)
-80 (-8.20 % of base) : 471971.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPublicKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-80 (-0.92 % of base) : 557282.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-72 (-10.47 % of base) : 273116.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
-68 (-4.15 % of base) : 341146.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-64 (-19.05 % of base) : 292927.dasm - (dynamicClass):lambda_method891(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
-60 (-1.41 % of base) : 157690.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-60 (-1.27 % of base) : 57544.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-60 (-14.29 % of base) : 529456.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-60 (-14.29 % of base) : 558012.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-60 (-2.01 % of base) : 394750.dasm - System.Xml.RwFactoryWriterTests.CXmlDriverEngine:ProcessIncludes(System.String[],System.String,System.Xml.Linq.XElement,OLEDB.Test.ModuleCore.MyDict`2[System.String,System.Object],System.Collections.IList):this (Tier1)
-56 (-11.20 % of base) : 119409.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-56 (-20.29 % of base) : 578220.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
Top method regressions (percentages):
112 (8.70 % of base) : 488375.dasm - Moq.Extensions:IsOrContainsTypeMatcher(System.Type):ubyte (Tier1)
16 (8.33 % of base) : 155314.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
32 (5.48 % of base) : 102614.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+ImplicitConversion:bindImplicitConversionToBase(Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType):ubyte:this (Tier1)
8 (5.13 % of base) : 396139.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
8 (3.70 % of base) : 338833.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (Tier1)
24 (3.33 % of base) : 155313.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
20 (3.23 % of base) : 374925.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
36 (2.00 % of base) : 577192.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
32 (1.83 % of base) : 119507.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
8 (1.68 % of base) : 266672.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (1.60 % of base) : 409198.dasm - System.MulticastDelegate:DeleteFromInvocationList(System.Object[],int,int,int):System.Object[]:this (Tier1)
4 (1.27 % of base) : 620817.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAnyImpl>b__66_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
48 (1.25 % of base) : 84351.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 233004.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 609918.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
16 (1.19 % of base) : 480330.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
16 (1.19 % of base) : 558064.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
16 (1.19 % of base) : 317192.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
16 (1.19 % of base) : 341092.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
40 (1.16 % of base) : 308004.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method improvements (percentages):
-28 (-46.67 % of base) : 529306.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-46.67 % of base) : 557329.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-35.29 % of base) : 62295.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-48 (-30.77 % of base) : 488645.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-32 (-28.57 % of base) : 268134.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-28.57 % of base) : 123680.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-28.00 % of base) : 45378.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-27.59 % of base) : 555599.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (Tier1)
-40 (-25.00 % of base) : 64078.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
-24 (-24.00 % of base) : 281369.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
-40 (-23.26 % of base) : 91058.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
-24 (-23.08 % of base) : 90826.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-22.22 % of base) : 530639.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
-24 (-22.22 % of base) : 558900.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
-28 (-21.88 % of base) : 47791.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-48 (-21.82 % of base) : 168822.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
-84 (-21.21 % of base) : 466373.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2):System.__Canon (Tier1)
-32 (-20.51 % of base) : 54474.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (Tier1)
-40 (-20.41 % of base) : 290986.dasm - (dynamicClass):lambda_method52(System.Runtime.CompilerServices.Closure):System.Object (FullOpts)
-56 (-20.29 % of base) : 578220.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 128186724 (overridden on cmd)
Total bytes of diff: 128164012 (overridden on cmd)
Total bytes of delta: -22712 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
76 : 141038.dasm (14.07 % of base)
56 : 178951.dasm (2.95 % of base)
48 : 92229.dasm (92.31 % of base)
40 : 92925.dasm (43.48 % of base)
40 : 93500.dasm (43.48 % of base)
12 : 183195.dasm (1.84 % of base)
12 : 37471.dasm (2.97 % of base)
12 : 37481.dasm (2.70 % of base)
12 : 37489.dasm (2.97 % of base)
12 : 37808.dasm (4.17 % of base)
12 : 37942.dasm (1.71 % of base)
12 : 38037.dasm (3.09 % of base)
8 : 37909.dasm (1.80 % of base)
4 : 37349.dasm (0.40 % of base)
4 : 37795.dasm (0.49 % of base)
4 : 90581.dasm (0.08 % of base)
4 : 96402.dasm (2.63 % of base)
Top file improvements (bytes):
-600 : 62743.dasm (-25.17 % of base)
-384 : 164782.dasm (-15.79 % of base)
-352 : 163666.dasm (-12.59 % of base)
-304 : 164776.dasm (-12.38 % of base)
-296 : 205245.dasm (-17.05 % of base)
-244 : 14914.dasm (-17.04 % of base)
-224 : 164778.dasm (-12.25 % of base)
-176 : 164774.dasm (-6.89 % of base)
-160 : 164779.dasm (-8.97 % of base)
-160 : 196567.dasm (-8.97 % of base)
-160 : 192283.dasm (-7.53 % of base)
-160 : 193653.dasm (-7.53 % of base)
-144 : 62705.dasm (-12.04 % of base)
-140 : 300988.dasm (-2.60 % of base)
-128 : 206010.dasm (-3.03 % of base)
-128 : 230465.dasm (-3.77 % of base)
-124 : 164347.dasm (-6.83 % of base)
-120 : 164781.dasm (-8.96 % of base)
-116 : 165045.dasm (-3.48 % of base)
-116 : 302665.dasm (-3.48 % of base)
71 total files with Code Size differences (54 improved, 17 regressed), 21 unchanged.
Top method regressions (bytes):
76 (14.07 % of base) : 141038.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
56 (2.95 % of base) : 178951.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
48 (92.31 % of base) : 92229.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
40 (43.48 % of base) : 92925.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
40 (43.48 % of base) : 93500.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
12 (2.70 % of base) : 37481.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37489.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37471.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.71 % of base) : 37942.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (4.17 % of base) : 37808.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (3.09 % of base) : 38037.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.84 % of base) : 183195.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
8 (1.80 % of base) : 37909.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.40 % of base) : 37349.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.49 % of base) : 37795.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:ContainSingle(System.String,System.Object[]):FluentAssertions.AndWhichConstraint`2[System.__Canon,System.__Canon]:this (FullOpts)
4 (2.63 % of base) : 96402.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (0.08 % of base) : 90581.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
Top method improvements (bytes):
-600 (-25.17 % of base) : 62743.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-384 (-15.79 % of base) : 164782.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-352 (-12.59 % of base) : 163666.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-304 (-12.38 % of base) : 164776.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-296 (-17.05 % of base) : 205245.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)
-244 (-17.04 % of base) : 14914.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)
-224 (-12.25 % of base) : 164778.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-176 (-6.89 % of base) : 164774.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-160 (-7.53 % of base) : 192283.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-160 (-7.53 % of base) : 193653.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-160 (-8.97 % of base) : 164779.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-160 (-8.97 % of base) : 196567.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-144 (-12.04 % of base) : 62705.dasm - System.CodeDom.Compiler.Tests.CodeGenerationTests:GenerateCode(System.CodeDom.CodeObject,System.CodeDom.Compiler.CodeDomProvider):System.String (FullOpts)
-140 (-2.60 % of base) : 300988.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)
-128 (-3.03 % of base) : 206010.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)
-128 (-3.77 % of base) : 230465.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)
-124 (-6.83 % of base) : 164347.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-120 (-8.96 % of base) : 164781.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (FullOpts)
-116 (-3.48 % of base) : 165045.dasm - XmlSerializerTests:Xml_CollectionRoot_MorePrimitiveTypes() (FullOpts)
-116 (-3.48 % of base) : 302665.dasm - XmlSerializerTests:Xml_CollectionRoot_MorePrimitiveTypes() (FullOpts)
Top method regressions (percentages):
48 (92.31 % of base) : 92229.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
40 (43.48 % of base) : 92925.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
40 (43.48 % of base) : 93500.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
76 (14.07 % of base) : 141038.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
12 (4.17 % of base) : 37808.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (3.09 % of base) : 38037.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37489.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37471.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
56 (2.95 % of base) : 178951.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
12 (2.70 % of base) : 37481.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (2.63 % of base) : 96402.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
12 (1.84 % of base) : 183195.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
8 (1.80 % of base) : 37909.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.71 % of base) : 37942.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.49 % of base) : 37795.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:ContainSingle(System.String,System.Object[]):FluentAssertions.AndWhichConstraint`2[System.__Canon,System.__Canon]:this (FullOpts)
4 (0.40 % of base) : 37349.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.08 % of base) : 90581.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 35965.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-46.67 % of base) : 140917.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-24 (-40.00 % of base) : 30311.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)
-56 (-35.00 % of base) : 162818.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-72 (-34.62 % of base) : 164162.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-40 (-33.33 % of base) : 69177.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-44 (-33.33 % of base) : 164811.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-24 (-31.58 % of base) : 87411.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)
-24 (-31.58 % of base) : 132471.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 42425.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-24 (-30.00 % of base) : 48056.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-24 (-30.00 % of base) : 42421.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48047.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 42424.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48051.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-32 (-28.57 % of base) : 184257.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-32 (-28.57 % of base) : 73697.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-28.57 % of base) : 125592.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 92777.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NonNullableField(System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 96770.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.__Canon,System.__Canon]:Fetch(System.Object):System.Object:this (FullOpts)
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10406056 (overridden on cmd)
Total bytes of diff: 10402976 (overridden on cmd)
Total bytes of delta: -3080 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 4743.dasm (4.35 % of base)
Top file improvements (bytes):
-120 : 30659.dasm (-28.30 % of base)
-64 : 26270.dasm (-6.81 % of base)
-64 : 30302.dasm (-25.81 % of base)
-60 : 31283.dasm (-20.55 % of base)
-60 : 8369.dasm (-32.61 % of base)
-56 : 30277.dasm (-2.52 % of base)
-56 : 4955.dasm (-22.22 % of base)
-56 : 9676.dasm (-8.81 % of base)
-56 : 6687.dasm (-4.09 % of base)
-52 : 28658.dasm (-8.28 % of base)
-44 : 19229.dasm (-3.20 % of base)
-44 : 16759.dasm (-16.18 % of base)
-44 : 28345.dasm (-2.68 % of base)
-40 : 26840.dasm (-8.06 % of base)
-40 : 30307.dasm (-13.89 % of base)
-40 : 14933.dasm (-4.88 % of base)
-40 : 18579.dasm (-12.50 % of base)
-40 : 30272.dasm (-17.86 % of base)
-40 : 7923.dasm (-12.50 % of base)
-36 : 15385.dasm (-15.00 % of base)
58 total files with Code Size differences (57 improved, 1 regressed), 6 unchanged.
Top method regressions (bytes):
16 (4.35 % of base) : 4743.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
Top method improvements (bytes):
-120 (-28.30 % of base) : 30659.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)
-64 (-6.81 % of base) : 26270.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)
-64 (-25.81 % of base) : 30302.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-60 (-32.61 % of base) : 8369.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-60 (-20.55 % of base) : 31283.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-56 (-8.81 % of base) : 9676.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)
-56 (-4.09 % of base) : 6687.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)
-56 (-2.52 % of base) : 30277.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)
-56 (-22.22 % of base) : 4955.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-52 (-8.28 % of base) : 28658.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)
-44 (-3.20 % of base) : 19229.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)
-44 (-16.18 % of base) : 16759.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-2.68 % of base) : 28345.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-40 (-12.50 % of base) : 7923.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
-40 (-4.88 % of base) : 14933.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-40 (-12.50 % of base) : 18579.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-40 (-8.06 % of base) : 26840.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-40 (-13.89 % of base) : 30307.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-40 (-17.86 % of base) : 30272.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-15.00 % of base) : 15385.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
Top method regressions (percentages):
16 (4.35 % of base) : 4743.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
Top method improvements (percentages):
-60 (-32.61 % of base) : 8369.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-24 (-31.58 % of base) : 31372.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-120 (-28.30 % of base) : 30659.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)
-28 (-28.00 % of base) : 404.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-25.93 % of base) : 14790.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-64 (-25.81 % of base) : 30302.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-28 (-23.33 % of base) : 10024.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
-56 (-22.22 % of base) : 4955.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-21.21 % of base) : 4630.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)
-20 (-20.83 % of base) : 15232.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-60 (-20.55 % of base) : 31283.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-32 (-19.05 % of base) : 30674.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-28 (-18.42 % of base) : 9630.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-20 (-17.86 % of base) : 15503.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-40 (-17.86 % of base) : 30272.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-17.50 % of base) : 9270.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-24 (-17.14 % of base) : 20678.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-44 (-16.18 % of base) : 16759.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-16 (-16.00 % of base) : 28518.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-28 (-15.91 % of base) : 10954.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+hasStaticBindings@2118-1:Invoke(FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassBindingGroup):ubyte:this (FullOpts)
windows arm64
Diffs are based on 2,184,704 contexts (929,692 MinOpts, 1,255,012 FullOpts).
MISSED contexts: base: 6,353 (0.27%), diff: 130,094 (5.62%)
Overall (-151,904 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
9,044,204 |
-1,884 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
36,011,172 |
-39,288 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
14,709,248 |
-888 |
| coreclr_tests.run.windows.arm64.checked.mch |
463,642,536 |
-4,068 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,003,176 |
-38,848 |
| libraries.pmi.windows.arm64.checked.mch |
58,134,360 |
-17,132 |
| libraries_tests.run.windows.arm64.Release.mch |
270,919,832 |
-19,228 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
135,024,244 |
-23,212 |
| realworld.run.windows.arm64.checked.mch |
11,030,528 |
-3,980 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
3,513,408 |
-3,376 |
FullOpts (-151,904 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
9,043,668 |
-1,884 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
19,952,756 |
-39,288 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
3,536,520 |
-888 |
| coreclr_tests.run.windows.arm64.checked.mch |
125,055,364 |
-4,068 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,001,540 |
-38,848 |
| libraries.pmi.windows.arm64.checked.mch |
58,014,376 |
-17,132 |
| libraries_tests.run.windows.arm64.Release.mch |
69,913,880 |
-19,228 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
121,887,704 |
-23,212 |
| realworld.run.windows.arm64.checked.mch |
10,466,548 |
-3,980 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
3,512,396 |
-3,376 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-28 (-46.67%) : 1725.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-31.58%) : 3858.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,34 +21,22 @@ G_M11807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M11807_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M11807_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M11807_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M11807_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3, #0x08]
- cmp x2, x3
- beq G_M11807_IG05
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M11807_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x08]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M11807_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M11807_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (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 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +47,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 684.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 20440.dasm - CscBench:DataflowBench():ubyte (FullOpts)
@@ -38,100 +38,99 @@
; V27 tmp12 [V27,T01] ( 5, 20 ) ref -> x0 "spilling varStr"
; V28 tmp13 [V28,T13] ( 3, 11 ) int -> x0 "spilling unroll qmark"
; V29 tmp14 [V29,T02] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V30 tmp15 [V30,T24] ( 2, 4 ) ref -> x0 class-hnd single-def "bubbling QMark2" <Microsoft.CodeAnalysis.Text.SourceText>
-;* V31 tmp16 [V31 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <<unknown class>>
-;* V33 tmp18 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-;* V34 tmp19 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-;* V35 tmp20 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-; V36 tmp21 [V36,T31] ( 2, 2 ) ref -> x15 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.PortableExecutableReference>
-; V37 tmp22 [V37,T25] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.IO.Stream>
-; V38 tmp23 [V38,T32] ( 2, 2 ) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.ModuleMetadata>
-;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-; V40 tmp25 [V40,T05] ( 7, 14 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
-;* V41 tmp26 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
-;* V42 tmp27 [V42 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V43 tmp28 [V43 ] ( 0, 0 ) ref -> zero-ref
-;* V44 tmp29 [V44 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V30 tmp15 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
+; V31 tmp16 [V31,T24] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Text.SourceText>
+;* V32 tmp17 [V32,T35] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V33 tmp18 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
+;* V34 tmp19 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+; V35 tmp20 [V35,T31] ( 2, 2 ) ref -> x15 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.PortableExecutableReference>
+; V36 tmp21 [V36,T25] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V37 tmp22 [V37,T32] ( 2, 2 ) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.ModuleMetadata>
+;* V38 tmp23 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+; V39 tmp24 [V39,T05] ( 7, 14 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
+;* V40 tmp25 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.MetadataImageReference>
+;* V41 tmp26 [V41 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V42 tmp27 [V42 ] ( 0, 0 ) ref -> zero-ref
+;* V43 tmp28 [V43 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V44 tmp29 [V44 ] ( 0, 0 ) ref -> zero-ref
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref
;* V46 tmp31 [V46 ] ( 0, 0 ) ref -> zero-ref
-;* V47 tmp32 [V47 ] ( 0, 0 ) ref -> zero-ref
-;* V48 tmp33 [V48 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V47 tmp32 [V47 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V48 tmp33 [V48 ] ( 0, 0 ) ref -> zero-ref
;* V49 tmp34 [V49 ] ( 0, 0 ) ref -> zero-ref
-;* V50 tmp35 [V50 ] ( 0, 0 ) ref -> zero-ref
-;* V51 tmp36 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V52 tmp37 [V52 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V54 tmp39 [V54 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V55 tmp40 [V55 ] ( 0, 0 ) ref -> zero-ref
-;* V56 tmp41 [V56 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V57 tmp42 [V57 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
-;* V58 tmp43 [V58 ] ( 0, 0 ) ref -> zero-ref single-def
-; V59 tmp44 [V59,T33] ( 2, 2 ) ref -> x3 single-def
-; V60 tmp45 [V60,T26] ( 2, 4 ) ref -> x24 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.AssemblyMetadata>
-;* V61 tmp46 [V61 ] ( 0, 0 ) ref -> zero-ref single-def
-; V62 tmp47 [V62,T34] ( 2, 2 ) ref -> x1
-; V63 tmp48 [V63,T08] ( 4, 12 ) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.DataFlowAnalysis>
-; V64 tmp49 [V64,T00] ( 4, 24 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
-;* V65 tmp50 [V65 ] ( 0, 0 ) ref -> zero-ref
-; V66 tmp51 [V66,T11] ( 2, 12 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax>
-; V67 tmp52 [V67,T12] ( 2, 12 ) ref -> x2 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax>
-; V68 tmp53 [V68,T18] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
-;* V69 tmp54 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]>
-;* V70 tmp55 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V71 tmp56 [V71 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.array (fldOffset=0x0)" P-INDEP
-;* V72 tmp57 [V72,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V73 tmp58 [V73,T38] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;* V74 tmp59 [V74,T35] ( 0, 0 ) ref -> zero-ref single-def "field V16.array (fldOffset=0x0)" P-INDEP
-; V75 tmp60 [V75,T10] ( 3, 12 ) ref -> x23 "field V23.array (fldOffset=0x0)" P-INDEP
-;* V76 tmp61 [V76 ] ( 0, 0 ) ref -> zero-ref "field V25.array (fldOffset=0x0)" P-INDEP
-;* V77 tmp62 [V77,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V33.hasValue (fldOffset=0x0)" P-INDEP
-;* V78 tmp63 [V78,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V33.value (fldOffset=0x1)" P-INDEP
-;* V79 tmp64 [V79,T36] ( 0, 0 ) ref -> zero-ref single-def "field V34._source (fldOffset=0x0)" P-INDEP
-;* V80 tmp65 [V80 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V39._kind (fldOffset=0x0)" P-INDEP
-;* V81 tmp66 [V81 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V39._embedInteropTypes (fldOffset=0x1)" P-INDEP
-;* V82 tmp67 [V82 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V39.<HasRecursiveAliases>k__BackingField (fldOffset=0x2)" P-INDEP
-;* V83 tmp68 [V83 ] ( 0, 0 ) ref -> zero-ref single-def "field V39._aliases (fldOffset=0x8)" P-INDEP
-;* V84 tmp69 [V84 ] ( 0, 0 ) ref -> zero-ref "field V69.array (fldOffset=0x0)" P-INDEP
-;* V85 tmp70 [V85 ] ( 0, 0 ) ubyte -> zero-ref single-def "V35.[000..001)"
-;* V86 tmp71 [V86 ] ( 0, 0 ) ubyte -> zero-ref single-def "V35.[001..002)"
-;* V87 tmp72 [V87 ] ( 0, 0 ) ubyte -> zero-ref single-def "V35.[002..003)"
-;* V88 tmp73 [V88 ] ( 0, 0 ) ref -> zero-ref single-def "V35.[008..016)"
-;* V89 tmp74 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V42.[000..001)"
-;* V90 tmp75 [V90 ] ( 0, 0 ) ubyte -> zero-ref "V42.[001..002)"
-;* V91 tmp76 [V91 ] ( 0, 0 ) ubyte -> zero-ref "V42.[002..003)"
-;* V92 tmp77 [V92 ] ( 0, 0 ) ref -> zero-ref "V42.[008..016)"
-;* V93 tmp78 [V93 ] ( 0, 0 ) ubyte -> zero-ref single-def "V51.[000..001)"
-;* V94 tmp79 [V94 ] ( 0, 0 ) ubyte -> zero-ref single-def "V51.[001..002)"
-;* V95 tmp80 [V95 ] ( 0, 0 ) ubyte -> zero-ref single-def "V51.[002..003)"
-;* V96 tmp81 [V96 ] ( 0, 0 ) ref -> zero-ref single-def "V51.[008..016)"
-;* V97 tmp82 [V97 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[000..001)"
-;* V98 tmp83 [V98 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[001..002)"
-;* V99 tmp84 [V99 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[002..003)"
-;* V100 tmp85 [V100 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)"
-;* V101 tmp86 [V101 ] ( 0, 0 ) ubyte -> zero-ref "V44.[000..001)"
-;* V102 tmp87 [V102 ] ( 0, 0 ) ubyte -> zero-ref "V44.[001..002)"
-;* V103 tmp88 [V103 ] ( 0, 0 ) ubyte -> zero-ref "V44.[002..003)"
-;* V104 tmp89 [V104 ] ( 0, 0 ) ref -> zero-ref "V44.[008..016)"
-;* V105 tmp90 [V105 ] ( 0, 0 ) ubyte -> zero-ref single-def "V53.[000..001)"
-;* V106 tmp91 [V106 ] ( 0, 0 ) ubyte -> zero-ref single-def "V53.[001..002)"
-;* V107 tmp92 [V107 ] ( 0, 0 ) ubyte -> zero-ref single-def "V53.[002..003)"
-;* V108 tmp93 [V108 ] ( 0, 0 ) ref -> zero-ref single-def "V53.[008..016)"
-;* V109 tmp94 [V109 ] ( 0, 0 ) ubyte -> zero-ref "V48.[000..001)"
-;* V110 tmp95 [V110 ] ( 0, 0 ) ubyte -> zero-ref "V48.[001..002)"
-;* V111 tmp96 [V111 ] ( 0, 0 ) ubyte -> zero-ref "V48.[002..003)"
-;* V112 tmp97 [V112 ] ( 0, 0 ) ref -> zero-ref "V48.[008..016)"
-;* V113 tmp98 [V113 ] ( 0, 0 ) ubyte -> zero-ref single-def "V57.[000..001)"
-;* V114 tmp99 [V114 ] ( 0, 0 ) ubyte -> zero-ref single-def "V57.[001..002)"
-;* V115 tmp100 [V115 ] ( 0, 0 ) ubyte -> zero-ref single-def "V57.[002..003)"
-;* V116 tmp101 [V116 ] ( 0, 0 ) ref -> zero-ref single-def "V57.[008..016)"
-;* V117 tmp102 [V117 ] ( 0, 0 ) byref -> zero-ref "Spilling address for field-by-field copy"
-; V118 tmp103 [V118,T16] ( 4, 8 ) byref -> x14 single-def "Spilling address for field-by-field copy"
-; V119 tmp104 [V119,T17] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V120 tmp105 [V120,T27] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V121 tmp106 [V121,T04] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V122 cse0 [V122,T23] ( 2, 5 ) ref -> x22 hoist "CSE - moderate"
-; V123 cse1 [V123,T09] ( 4, 12 ) long -> x24 "CSE - aggressive"
+;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V51 tmp36 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V52 tmp37 [V52 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V53 tmp38 [V53 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V54 tmp39 [V54 ] ( 0, 0 ) ref -> zero-ref
+;* V55 tmp40 [V55 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V56 tmp41 [V56 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.MetadataReferenceProperties>
+;* V57 tmp42 [V57 ] ( 0, 0 ) ref -> zero-ref single-def
+; V58 tmp43 [V58,T33] ( 2, 2 ) ref -> x3 single-def
+; V59 tmp44 [V59,T26] ( 2, 4 ) ref -> x24 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.AssemblyMetadata>
+;* V60 tmp45 [V60 ] ( 0, 0 ) ref -> zero-ref single-def
+; V61 tmp46 [V61,T34] ( 2, 2 ) ref -> x1
+; V62 tmp47 [V62,T08] ( 4, 12 ) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.DataFlowAnalysis>
+; V63 tmp48 [V63,T00] ( 4, 24 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+;* V64 tmp49 [V64 ] ( 0, 0 ) ref -> zero-ref
+; V65 tmp50 [V65,T11] ( 2, 12 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax>
+; V66 tmp51 [V66,T12] ( 2, 12 ) ref -> x2 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax>
+; V67 tmp52 [V67,T18] ( 2, 8 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>>
+;* V68 tmp53 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]>
+;* V69 tmp54 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V70 tmp55 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V07.array (fldOffset=0x0)" P-INDEP
+;* V71 tmp56 [V71,T38] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V72 tmp57 [V72,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;* V73 tmp58 [V73,T36] ( 0, 0 ) ref -> zero-ref single-def "field V16.array (fldOffset=0x0)" P-INDEP
+; V74 tmp59 [V74,T10] ( 3, 12 ) ref -> x23 "field V23.array (fldOffset=0x0)" P-INDEP
+;* V75 tmp60 [V75 ] ( 0, 0 ) ref -> zero-ref "field V25.array (fldOffset=0x0)" P-INDEP
+;* V76 tmp61 [V76,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.hasValue (fldOffset=0x0)" P-INDEP
+;* V77 tmp62 [V77,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.value (fldOffset=0x1)" P-INDEP
+;* V78 tmp63 [V78,T37] ( 0, 0 ) ref -> zero-ref single-def "field V33._source (fldOffset=0x0)" P-INDEP
+;* V79 tmp64 [V79 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V38._kind (fldOffset=0x0)" P-INDEP
+;* V80 tmp65 [V80 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V38._embedInteropTypes (fldOffset=0x1)" P-INDEP
+;* V81 tmp66 [V81 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V38.<HasRecursiveAliases>k__BackingField (fldOffset=0x2)" P-INDEP
+;* V82 tmp67 [V82 ] ( 0, 0 ) ref -> zero-ref single-def "field V38._aliases (fldOffset=0x8)" P-INDEP
+;* V83 tmp68 [V83 ] ( 0, 0 ) ref -> zero-ref "field V68.array (fldOffset=0x0)" P-INDEP
+;* V84 tmp69 [V84 ] ( 0, 0 ) ubyte -> zero-ref single-def "V34.[000..001)"
+;* V85 tmp70 [V85 ] ( 0, 0 ) ubyte -> zero-ref single-def "V34.[001..002)"
+;* V86 tmp71 [V86 ] ( 0, 0 ) ubyte -> zero-ref single-def "V34.[002..003)"
+;* V87 tmp72 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V34.[008..016)"
+;* V88 tmp73 [V88 ] ( 0, 0 ) ubyte -> zero-ref "V41.[000..001)"
+;* V89 tmp74 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V41.[001..002)"
+;* V90 tmp75 [V90 ] ( 0, 0 ) ubyte -> zero-ref "V41.[002..003)"
+;* V91 tmp76 [V91 ] ( 0, 0 ) ref -> zero-ref "V41.[008..016)"
+;* V92 tmp77 [V92 ] ( 0, 0 ) ubyte -> zero-ref single-def "V50.[000..001)"
+;* V93 tmp78 [V93 ] ( 0, 0 ) ubyte -> zero-ref single-def "V50.[001..002)"
+;* V94 tmp79 [V94 ] ( 0, 0 ) ubyte -> zero-ref single-def "V50.[002..003)"
+;* V95 tmp80 [V95 ] ( 0, 0 ) ref -> zero-ref single-def "V50.[008..016)"
+;* V96 tmp81 [V96 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[000..001)"
+;* V97 tmp82 [V97 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[001..002)"
+;* V98 tmp83 [V98 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[002..003)"
+;* V99 tmp84 [V99 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)"
+;* V100 tmp85 [V100 ] ( 0, 0 ) ubyte -> zero-ref "V43.[000..001)"
+;* V101 tmp86 [V101 ] ( 0, 0 ) ubyte -> zero-ref "V43.[001..002)"
+;* V102 tmp87 [V102 ] ( 0, 0 ) ubyte -> zero-ref "V43.[002..003)"
+;* V103 tmp88 [V103 ] ( 0, 0 ) ref -> zero-ref "V43.[008..016)"
+;* V104 tmp89 [V104 ] ( 0, 0 ) ubyte -> zero-ref single-def "V52.[000..001)"
+;* V105 tmp90 [V105 ] ( 0, 0 ) ubyte -> zero-ref single-def "V52.[001..002)"
+;* V106 tmp91 [V106 ] ( 0, 0 ) ubyte -> zero-ref single-def "V52.[002..003)"
+;* V107 tmp92 [V107 ] ( 0, 0 ) ref -> zero-ref single-def "V52.[008..016)"
+;* V108 tmp93 [V108 ] ( 0, 0 ) ubyte -> zero-ref "V47.[000..001)"
+;* V109 tmp94 [V109 ] ( 0, 0 ) ubyte -> zero-ref "V47.[001..002)"
+;* V110 tmp95 [V110 ] ( 0, 0 ) ubyte -> zero-ref "V47.[002..003)"
+;* V111 tmp96 [V111 ] ( 0, 0 ) ref -> zero-ref "V47.[008..016)"
+;* V112 tmp97 [V112 ] ( 0, 0 ) ubyte -> zero-ref single-def "V56.[000..001)"
+;* V113 tmp98 [V113 ] ( 0, 0 ) ubyte -> zero-ref single-def "V56.[001..002)"
+;* V114 tmp99 [V114 ] ( 0, 0 ) ubyte -> zero-ref single-def "V56.[002..003)"
+;* V115 tmp100 [V115 ] ( 0, 0 ) ref -> zero-ref single-def "V56.[008..016)"
+;* V116 tmp101 [V116 ] ( 0, 0 ) byref -> zero-ref "Spilling address for field-by-field copy"
+; V117 tmp102 [V117,T16] ( 4, 8 ) byref -> x14 single-def "Spilling address for field-by-field copy"
+; V118 tmp103 [V118,T17] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V119 tmp104 [V119,T27] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V120 tmp105 [V120,T04] ( 2, 16 ) ref -> x1 "argument with side effect"
+; V121 cse0 [V121,T23] ( 2, 5 ) ref -> x22 hoist "CSE - moderate"
+; V122 cse1 [V122,T09] ( 4, 12 ) long -> x24 "CSE - aggressive"
;
; Lcl frame size = 184
@@ -157,11 +156,11 @@ G_M35861_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- strb wzr, [fp, #0x10] // [V119 tmp104]
- strb wzr, [fp, #0x11] // [V119 tmp104+0x01]
- ldrh w4, [fp, #0x10] // [V119 tmp104]
- mov x5, xzr
+ strb wzr, [fp, #0x10] // [V118 tmp103]
+ strb wzr, [fp, #0x11] // [V118 tmp103+0x01]
+ ldrh w4, [fp, #0x10] // [V118 tmp103]
mov x1, xzr
+ mov x5, xzr
movz x2, #8
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -234,7 +233,7 @@ G_M35861_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=4 bbWeight=1 PerfScore 1.00
G_M35861_IG16: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
str w0, [sp, #0x98] // [V15 OutArgs+0x98]
- ldrh w0, [fp, #0x10] // [V119 tmp104]
+ ldrh w0, [fp, #0x10] // [V118 tmp103]
str w0, [sp, #0x28] // [V15 OutArgs+0x28]
mov x0, x20
; gcrRegs +[x0]
+4 (+0.40%) : 2096.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
@@ -12,53 +12,47 @@
; V01 arg1 [V01,T07] ( 11, 7.50) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T02] ( 19, 19 ) long -> [fp+0x18] do-not-enreg[Z] EH-live
; V03 loc1 [V03,T15] ( 5, 4 ) long -> x20
-; V04 loc2 [V04,T24] ( 2, 2 ) long -> x0
-; V05 loc3 [V05,T28] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T22] ( 2, 2 ) long -> x0
+; V05 loc3 [V05,T26] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T03] ( 5, 16.50) int -> x2
-; V07 loc5 [V07,T25] ( 2, 2 ) long -> x0
+; V07 loc5 [V07,T23] ( 2, 2 ) long -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T16] ( 2, 4 ) byref -> x21 single-def "impAppendStmt"
; V10 tmp2 [V10,T13] ( 3, 6 ) byref -> x0 single-def "dup spill"
-; V11 tmp3 [V11,T22] ( 2, 2 ) byref -> x22 single-def "impAppendStmt"
-; V12 tmp4 [V12,T19] ( 3, 3 ) byref -> x21 single-def "dup spill"
-;* V13 tmp5 [V13,T31] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V14 tmp6 [V14,T23] ( 2, 2 ) ref -> x19 class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp7 [V15,T04] ( 2, 16 ) byref -> x24 "impAppendStmt"
-; V16 tmp8 [V16,T01] ( 3, 24 ) byref -> x0 "dup spill"
-;* V17 tmp9 [V17,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V18 tmp10 [V18,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V21 tmp13 [V21,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp"
-;* V22 tmp14 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V23 tmp15 [V23,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object>
-;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V25 tmp17 [V25 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V26 tmp18 [V26,T34] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V27 tmp19 [V27,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V28 tmp20 [V28,T09] ( 2, 8 ) byref -> x0 "Inlining Arg"
-; V29 tmp21 [V29,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp"
-;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V31 tmp23 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V32 tmp24 [V32,T35] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V33 tmp25 [V33,T21] ( 4, 2 ) long -> x0 "Inline stloc first use temp"
-;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V36 tmp28 [V36,T26] ( 2, 2 ) long -> x0 "field V19._handle (fldOffset=0x0)" P-INDEP
-; V37 tmp29 [V37,T10] ( 2, 8 ) long -> x0 "field V24._handle (fldOffset=0x0)" P-INDEP
-; V38 tmp30 [V38,T29] ( 2, 1 ) long -> x0 "field V30._handle (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T36] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V40 tmp32 [V40,T37] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V41 tmp33 [V41,T38] ( 2, 0 ) ref -> x20 "argument with side effect"
-; V42 tmp34 [V42,T39] ( 2, 0 ) ref -> x2 "argument with side effect"
-; V43 PSPSym [V43,T33] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-;* V44 cse0 [V44 ] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V45 cse1 [V45,T20] ( 3, 2.50) ref -> x0 "CSE - moderate"
-; V46 cse2 [V46,T12] ( 5, 6 ) int -> x22 multi-def "CSE - aggressive"
-; V47 cse3 [V47,T11] ( 4, 6.50) long -> x21 "CSE - aggressive"
-; V48 cse4 [V48,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate"
-; V49 cse5 [V49,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
-; V50 cse6 [V50,T18] ( 4, 2 ) long -> registers multi-def "CSE - moderate"
+; V11 tmp3 [V11,T21] ( 2, 2 ) byref -> x22 single-def "impAppendStmt"
+; V12 tmp4 [V12,T18] ( 3, 3 ) byref -> x21 single-def "dup spill"
+; V13 tmp5 [V13,T04] ( 2, 16 ) byref -> x24 "impAppendStmt"
+; V14 tmp6 [V14,T01] ( 3, 24 ) byref -> x0 "dup spill"
+;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V17 tmp9 [V17,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp"
+;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V19 tmp11 [V19,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object>
+;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V21 tmp13 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V22 tmp14 [V22,T29] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V23 tmp15 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 tmp16 [V24,T09] ( 2, 8 ) byref -> x0 "Inlining Arg"
+; V25 tmp17 [V25,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp"
+;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V28 tmp20 [V28,T30] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V29 tmp21 [V29,T20] ( 4, 2 ) long -> x0 "Inline stloc first use temp"
+;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
+; V32 tmp24 [V32,T24] ( 2, 2 ) long -> x0 "field V15._handle (fldOffset=0x0)" P-INDEP
+; V33 tmp25 [V33,T10] ( 2, 8 ) long -> x0 "field V20._handle (fldOffset=0x0)" P-INDEP
+; V34 tmp26 [V34,T27] ( 2, 1 ) long -> x0 "field V26._handle (fldOffset=0x0)" P-INDEP
+; V35 tmp27 [V35,T31] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V36 tmp28 [V36,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V37 tmp29 [V37,T33] ( 2, 0 ) ref -> x20 "argument with side effect"
+; V38 tmp30 [V38,T34] ( 2, 0 ) ref -> x2 "argument with side effect"
+; V39 PSPSym [V39,T28] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V40 cse0 [V40,T12] ( 5, 6 ) int -> registers multi-def "CSE - aggressive"
+; V41 cse1 [V41,T19] ( 3, 2.50) ref -> x0 "CSE - moderate"
+; V42 cse2 [V42,T11] ( 4, 6.50) long -> x21 "CSE - aggressive"
+; V43 cse3 [V43,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate"
+; V44 cse4 [V44,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -70,7 +64,7 @@ G_M14417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x25, [sp, #0x58]
mov fp, sp
add x2, sp, #96
- str x2, [fp, #0x20] // [V43 PSPSym]
+ str x2, [fp, #0x20] // [V39 PSPSym]
str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
mov x19, x1
@@ -85,13 +79,13 @@ G_M14417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=8 bbWeight=1 PerfScore 1.50
G_M14417_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19]
- movz x21, #0xD1FFAB1E
- movk x21, #33 LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
+ movz x2, #0xD1FFAB1E
+ movk x2, #33 LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
bne G_M14417_IG05
- ldr w22, [x19, #0x08]
- mov w1, w22
+ ldr w21, [x19, #0x08]
+ mov w1, w21
add x20, x1, #1
b G_M14417_IG06
;; size=40 bbWeight=0.50 PerfScore 5.50
@@ -167,13 +161,14 @@ G_M14417_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x0, x1
bne G_M14417_IG22
mov w2, wzr
- ldr w22, [x19, #0x08]
+ ldr w0, [x19, #0x08]
+ sxtw w22, w0
cmp w22, #0
ble G_M14417_IG15
add x19, x19, #16
; gcrRegs -[x19]
; byrRegs +[x19]
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M14417_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [fp, #0x18] // [V02 loc0]
add w23, w2, #1
@@ -448,7 +443,7 @@ G_M14417_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 992, prolog size 40, PerfScore 236.00, instruction count 248, allocated bytes for code 992 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
+; Total bytes of code 996, prolog size 40, PerfScore 236.25, instruction count 249, allocated bytes for code 996 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
; ============================================================
Unwind Info:
@@ -459,7 +454,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 225 (0x000e1) Actual length = 900 (0x000384)
+ Function Length : 226 (0x000e2) Actual length = 904 (0x000388)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+8.59%) : 6220.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
@@ -8,29 +8,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
-; V01 arg1 [V01,T00] ( 8, 8 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task>
-; V02 arg2 [V02,T02] ( 4, 4 ) ubyte -> [fp+0x1C] EH-live single-def
+; V00 this [V00,T02] ( 4, 2.50) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
+; V01 arg1 [V01,T00] ( 8, 5 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task>
+; V02 arg2 [V02,T01] ( 5, 3.50) ubyte -> [fp+0x1C] EH-live single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp2 [V05,T07] ( 4, 4 ) ubyte -> x1 "Inline return value spill temp"
-; V06 tmp3 [V06,T06] ( 4, 4 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V07 tmp4 [V07,T12] ( 3, 3 ) ubyte -> x1 "Inline return value spill temp"
-; V08 tmp5 [V08,T09] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V05 tmp2 [V05,T07] ( 4, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V06 tmp3 [V06,T06] ( 4, 2 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V07 tmp4 [V07,T12] ( 3, 1.50) ubyte -> x1 "Inline return value spill temp"
+; V08 tmp5 [V08,T09] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V10 tmp7 [V10,T13] ( 2, 2 ) int -> x1 "Inline stloc first use temp"
+; V10 tmp7 [V10,T13] ( 2, 1 ) int -> x1 "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V16 tmp13 [V16,T10] ( 2, 4 ) byref -> x1 single-def "argument with side effect"
-; V17 PSPSym [V17,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V18 cse0 [V18,T01] ( 7, 7 ) byref -> x20 "CSE - aggressive"
-; V19 cse1 [V19,T11] ( 3, 3 ) ref -> x1 "CSE - aggressive"
-; V20 rat0 [V20,T08] ( 3, 4 ) byref -> x21 "TLS field access"
-; V21 rat1 [V21,T03] ( 3, 6 ) long -> x1 "TLS access"
-; V22 rat2 [V22,T04] ( 3, 6 ) long -> x1 "ThreadStaticBlockBase access"
+;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V15 tmp12 [V15,T10] ( 2, 2 ) byref -> x1 single-def "argument with side effect"
+; V16 PSPSym [V16,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V17 cse0 [V17,T03] ( 7, 3.50) byref -> x20 "CSE - aggressive"
+; V18 cse1 [V18,T11] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V19 rat0 [V19,T08] ( 3, 2 ) byref -> x21 "TLS field access"
+; V20 rat1 [V20,T04] ( 3, 3 ) long -> x1 "TLS access"
+; V21 rat2 [V21,T05] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
;
; Lcl frame size = 24
@@ -40,16 +39,18 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x21, [sp, #0x38]
mov fp, sp
add x3, sp, #64
- str x3, [fp, #0x20] // [V17 PSPSym]
+ str x3, [fp, #0x20] // [V16 PSPSym]
str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
str w2, [fp, #0x1C] // [V02 arg2]
mov x19, x1
; gcrRegs +[x19]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
tst w2, #255
- beq G_M14922_IG04
+ beq G_M14922_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M14922_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -67,16 +68,16 @@ G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M14922_IG04
+ cbnz w0, G_M14922_IG05
mov w0, wzr
- ;; size=68 bbWeight=1 PerfScore 15.50
-G_M14922_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=0.50 PerfScore 7.00
+G_M14922_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M14922_IG05: ; bbWeight=0.50, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
add x20, x19, #52
; byrRegs +[x20]
ldapr w1, [x20]
@@ -87,20 +88,20 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
ldapr x1, [x1]
; gcrRegs +[x1]
; byrRegs -[x1]
- cbz x1, G_M14922_IG08
+ cbz x1, G_M14922_IG09
add x3, x1, #56
; byrRegs +[x3]
ldapr w3, [x3]
; byrRegs -[x3]
cmp w3, #1
- beq G_M14922_IG07
+ beq G_M14922_IG08
add x1, x1, #64
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x1, [x1]
; gcrRegs +[x1]
; byrRegs -[x1]
- cbz x1, G_M14922_IG05
+ cbz x1, G_M14922_IG06
add x1, x1, #32
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -108,42 +109,42 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
; byrRegs -[x1]
cmp w1, #0
cset x1, ne
- b G_M14922_IG06
- ;; size=76 bbWeight=1 PerfScore 24.50
-G_M14922_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG07
+ ;; size=76 bbWeight=0.50 PerfScore 12.25
+G_M14922_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M14922_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- b G_M14922_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M14922_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M14922_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG10
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M14922_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, #1
- b G_M14922_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M14922_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG10
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M14922_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M14922_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M14922_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w3, [x20]
and w3, w3, #0xD1FFAB1E
mov w4, #0xD1FFAB1E
cmp w1, #0
ccmp w3, w4, z, eq
- beq G_M14922_IG12
+ beq G_M14922_IG13
ldr x1, [xpr, #0x58]
ldr x1, [x1, #0x10]
ldr w3, [x1, #0xD0]
cmp w3, #9
- blt G_M14922_IG11
+ blt G_M14922_IG12
ldr x1, [x1, #0xD8]
ldr x1, [x1, #0x48]
- cbz x1, G_M14922_IG11
+ cbz x1, G_M14922_IG12
ldr x1, [x1]
; byrRegs +[x1]
add x21, x1, #16
; byrRegs +[x21]
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ ;; size=64 bbWeight=0.50 PerfScore 13.50
+G_M14922_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs -[x1 x20]
add x1, x21, #104
; byrRegs +[x1]
@@ -158,9 +159,9 @@ G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
; gcrRegs -[x0 x19]
; byrRegs -[x1 x21]
; gcr arg pop 0
- b G_M14922_IG13
- ;; size=36 bbWeight=1 PerfScore 8.00
-G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M14922_IG14
+ ;; size=36 bbWeight=0.50 PerfScore 4.00
+G_M14922_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
mov w0, #9
bl CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
@@ -168,18 +169,18 @@ G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
mov x21, x0
; byrRegs +[x21]
- b G_M14922_IG10
+ b G_M14922_IG11
;; size=16 bbWeight=0 PerfScore 0.00
-G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M14922_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x0 x21] +[x20]
ldapr w1, [x20]
and w1, w1, #0xD1FFAB1E
cmp w1, #0xD1FFAB1E, LSL #12
- beq G_M14922_IG13
+ beq G_M14922_IG14
ldapr w1, [x20]
orr w1, w1, #0xD1FFAB1E
swpal w1, w1, [x20]
- tbnz w1, #22, G_M14922_IG13
+ tbnz w1, #22, G_M14922_IG14
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -190,33 +191,47 @@ G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
; gcrRegs -[x0 x19]
; byrRegs -[x20]
; gcr arg pop 0
- ;; size=56 bbWeight=1 PerfScore 18.50
-G_M14922_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V17 PSPSym]
- bl G_M14922_IG17
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M14922_IG14: ; bbWeight=1, nogc, extend
- nop
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M14922_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=0.50 PerfScore 9.25
+G_M14922_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w2, [fp, #0x1C] // [V02 arg2]
+ tst w2, #255
+ beq G_M14922_IG15
+ ldr x0, [fp, #0x10] // [V00 this]
+ ; gcrRegs +[x0]
+ ldrsb wzr, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool:NotifyWorkItemProgress():this
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
; GC ptr vars -{V00}
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=56 bbWeight=0.50 PerfScore 9.25
+G_M14922_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
...
benchmarks.run_pgo.windows.arm64.checked.mch
-28 (-28.00%) : 13323.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-17.14%) : 63151.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)
@@ -8,22 +8,19 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
-; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref
-; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg"
-; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg"
+; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
mov x1, x0
; gcrRegs +[x1]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M44215_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M44215_IG08
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00
+G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -104,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-14.63%) : 69991.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.Canon]:get_Item(int):System.Canon:this (Tier1)
@@ -10,22 +10,17 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 4, 3.29) byref -> x0 this single-def
-; V01 TypeCtx [V01,T00] ( 5, 3.86) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def
; V02 arg1 [V02,T01] ( 5, 3.29) int -> x2 single-def
-; V03 loc0 [V03,T03] ( 10, 5 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V03 loc0 [V03,T03] ( 8, 4.29) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V07 tmp3 [V07,T09] ( 3, 0.71) long -> x3 "fgMakeTemp is creating a new local variable"
-; V08 tmp4 [V08,T07] ( 5, 2.14) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V09 tmp5 [V09,T05] ( 3, 3.57) long -> x1 "fgMakeTemp is creating a new local variable"
-; V10 tmp6 [V10,T06] ( 3, 2.86) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp8 [V12,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V13 tmp9 [V13,T08] ( 3, 1.14) int -> x1 "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 4, 0.64) ref -> x1 "guarded devirt return temp"
-;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren>
-; V16 tmp12 [V16,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V05 tmp1 [V05,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V08 tmp4 [V08,T05] ( 3, 1.14) int -> x1 "Inlining Arg"
+; V09 tmp5 [V09,T06] ( 3, 0.57) ref -> x1 "guarded devirt return temp"
+;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren>
+; V11 tmp7 [V11,T08] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 16
@@ -40,57 +35,44 @@ G_M13118_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
- cbz x20, G_M13118_IG12
+ cbz x20, G_M13118_IG08
ldr x1, [x20, #0x18]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
; gcrRegs -[x1]
cmp w1, #1
- beq G_M13118_IG07
+ beq G_M13118_IG05
;; size=24 bbWeight=1 PerfScore 11.50
G_M13118_IG03: ; bbWeight=0.71, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- cbnz w2, G_M13118_IG12
- ldr x0, [x20]
- ldr x1, [x19, #0x38]
- ldr x1, [x1]
- ldr x1, [x1]
- cmp x0, x1
- beq G_M13118_IG05
- ;; size=28 bbWeight=0.71 PerfScore 10.36
-G_M13118_IG04: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x1
+ cbnz w2, G_M13118_IG08
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
mov x1, x20
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1 x20] +[x0]
- b G_M13118_IG06
- ;; size=16 bbWeight=0.36 PerfScore 1.07
-G_M13118_IG05: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x20]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M13118_IG06: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x20]
+ ;; size=24 bbWeight=0.71 PerfScore 8.21
+G_M13118_IG04: ; bbWeight=0.71, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.71 PerfScore 2.14
-G_M13118_IG07: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M13118_IG05: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
; byrRegs +[x0]
ldr w0, [x0]
; byrRegs -[x0]
cmp w2, w0
- bhs G_M13118_IG12
+ bhs G_M13118_IG08
lsl w1, w2, #1
ldr x0, [x20]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M13118_IG13
+ bne G_M13118_IG09
mov x0, x20
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this
@@ -102,32 +84,20 @@ G_M13118_IG07: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100
mov x1, x0
; gcrRegs +[x1]
;; size=68 bbWeight=0.29 PerfScore 5.14
-G_M13118_IG08: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M13118_IG06: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M13118_IG11
- ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M13118_IG09: ; bbWeight=0.14, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13118_IG11
- ;; size=24 bbWeight=0.14 PerfScore 1.93
-G_M13118_IG10: ; bbWeight=0.07, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.07 PerfScore 0.11
-G_M13118_IG11: ; bbWeight=0.29, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.29 PerfScore 2.86
+G_M13118_IG07: ; bbWeight=0.29, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.29 PerfScore 0.86
-G_M13118_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13118_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -157,7 +127,7 @@ G_M13118_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=76 bbWeight=0 PerfScore 0.00
-G_M13118_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M13118_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
mov x0, x20
; gcrRegs +[x0]
@@ -168,10 +138,10 @@ G_M13118_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x20]
mov x1, x0
; gcrRegs +[x1]
- b G_M13118_IG08
+ b G_M13118_IG06
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 16, PerfScore 37.71, instruction count 82, allocated bytes for code 328 (MethodHash=6436ccc1) for method Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
+; Total bytes of code 280, prolog size 16, PerfScore 34.71, instruction count 70, allocated bytes for code 280 (MethodHash=6436ccc1) for method Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -182,7 +152,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+48 (+2.55%) : 34535.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
@@ -11,43 +11,43 @@
;
; V00 this [V00,T00] ( 19, 17.03) ref -> x19 this class-hnd single-def <System.Reflection.Emit.DynamicMethod>
; V01 arg1 [V01,T17] ( 4, 4 ) ref -> x24 class-hnd single-def <System.String>
-; V02 arg2 [V02,T19] ( 3, 3 ) int -> x2 single-def
-; V03 arg3 [V03,T20] ( 3, 3 ) int -> x3 single-def
-; V04 arg4 [V04,T11] ( 7, 4.38) ref -> x22 class-hnd single-def <System.Type>
-; V05 arg5 [V05,T09] ( 5, 6.03) ref -> x21 class-hnd single-def <System.Type[]>
-; V06 arg6 [V06,T08] ( 10, 7.05) ref -> x20 class-hnd single-def <System.Type>
+; V02 arg2 [V02,T20] ( 3, 3 ) int -> x2 single-def
+; V03 arg3 [V03,T21] ( 3, 3 ) int -> x3 single-def
+; V04 arg4 [V04,T12] ( 7, 4.38) ref -> x22 class-hnd single-def <System.Type>
+; V05 arg5 [V05,T08] ( 5, 6.03) ref -> x21 class-hnd single-def <System.Type[]>
+; V06 arg6 [V06,T06] ( 10, 7.05) ref -> x20 class-hnd single-def <System.Type>
; V07 arg7 [V07,T13] ( 7, 4.08) ref -> x23 class-hnd single-def <System.Reflection.Module>
-; V08 arg8 [V08,T42] ( 2, 1 ) ubyte -> [fp+0x70] single-def
-; V09 arg9 [V09,T41] ( 1, 1.01) ubyte -> x25 single-def
+; V08 arg8 [V08,T44] ( 2, 1 ) ubyte -> [fp+0x70] single-def
+; V09 arg9 [V09,T43] ( 1, 1.01) ubyte -> x25 single-def
; V10 loc0 [V10,T02] ( 7, 13.02) int -> x27
-; V11 loc1 [V11,T07] ( 10, 9.44) ref -> x20 class-hnd exact <System.RuntimeType>
+; V11 loc1 [V11,T07] ( 9, 8.94) ref -> x20 class-hnd exact single-def <System.RuntimeType>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T46] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp1 [V13,T48] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp4 [V16,T33] ( 4, 2.71) ref -> x15
-; V17 tmp5 [V17,T29] ( 2, 2.03) int -> x0
-; V18 tmp6 [V18,T40] ( 2, 0.05) int -> x0
-; V19 tmp7 [V19,T30] ( 2, 2.03) int -> x0
-; V20 tmp8 [V20,T35] ( 3, 2.00) ref -> x20
-;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V22 tmp10 [V22,T47] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V23 tmp11 [V23,T45] ( 2, 0.00) int -> x0
-;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V25 tmp13 [V25,T12] ( 6, 6.13) ref -> x15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V26 tmp14 [V26,T48] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp15 [V27,T04] ( 3, 12.00) ref -> [fp+0x10] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
-;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V29 tmp17 [V29,T01] ( 5, 15.01) ref -> x15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V30 tmp18 [V30,T49] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V31 tmp19 [V31,T50] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp20 [V32,T26] ( 3, 4.00) ref -> x15 "guarded devirt return temp"
-; V33 tmp21 [V33,T03] ( 5, 12.00) ref -> x0 "guarded devirt arg temp"
-;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V35 tmp23 [V35,T39] ( 3, 1.36) ref -> x22 "guarded devirt return temp"
-;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V37 tmp25 [V37,T34] ( 3, 2.01) ref -> x20 "guarded devirt return temp"
-;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V16 tmp4 [V16,T35] ( 4, 2.71) ref -> x15
+; V17 tmp5 [V17,T30] ( 2, 2.03) int -> x0
+; V18 tmp6 [V18,T42] ( 2, 0.05) int -> x0
+; V19 tmp7 [V19,T31] ( 2, 2.03) int -> x0
+; V20 tmp8 [V20,T37] ( 3, 2.00) ref -> x20
+; V21 tmp9 [V21,T49] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T47] ( 2, 0.00) int -> x0
+; V23 tmp11 [V23,T34] ( 2, 2.72) ref -> x15 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V24 tmp12 [V24,T50] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp13 [V25,T04] ( 3, 12.00) ref -> [fp+0x18] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V26 tmp14 [V26,T10] ( 2, 8.00) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.RuntimeType>
+; V27 tmp15 [V27,T51] ( 3, 0 ) ref -> x22 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp16 [V28,T52] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp17 [V29,T27] ( 3, 4.00) ref -> x0 "guarded devirt return temp"
+; V30 tmp18 [V30,T03] ( 5, 12.00) ref -> x0 "guarded devirt arg temp"
+;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V32 tmp20 [V32,T41] ( 3, 1.36) ref -> x22 "guarded devirt return temp"
+;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V34 tmp22 [V34,T36] ( 3, 2.01) ref -> x20 "guarded devirt return temp"
+;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V37 tmp25 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp26 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -58,52 +58,51 @@
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp37 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V52 tmp40 [V52,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V53 tmp41 [V53,T22] ( 5, 4.97) ubyte -> x0 "Inline stloc first use temp"
-;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
-;* V55 tmp43 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
-;* V57 tmp45 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
-; V59 tmp47 [V59,T21] ( 12, 4.97) ref -> x23 class-hnd "Inline stloc first use temp" <System.Type>
-; V60 tmp48 [V60,T24] ( 3, 4.97) int -> x1 "guarded devirt return temp"
-;* V61 tmp49 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V62 tmp50 [V62,T25] ( 3, 4.97) ubyte -> x1 "Inline return value spill temp"
-; V63 tmp51 [V63,T23] ( 5, 4.97) ubyte -> x0 "Inline stloc first use temp"
-;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
-;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V67 tmp55 [V67,T51] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V69 tmp57 [V69,T36] ( 3, 1.99) int -> x1
-; V70 tmp58 [V70,T38] ( 2, 1.99) ubyte -> x14 "Inline stloc first use temp"
-;* V71 tmp59 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V72 tmp60 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp61 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V74 tmp62 [V74,T28] ( 2, 3.98) byref -> x14 single-def "Inlining Arg"
-;* V75 tmp63 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.m_type (fldOffset=0x0)" P-INDEP
-; V76 tmp64 [V76,T31] ( 5, 2.98) ref -> x0 single-def "field V56.m_type (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T37] ( 2, 1.99) ref -> x0 single-def "field V64.m_type (fldOffset=0x0)" P-INDEP
-;* V78 tmp66 [V78 ] ( 0, 0 ) long -> zero-ref "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V79 tmp67 [V79,T32] ( 3, 2.98) long -> x14 "field V71.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V80 tmp68 [V80,T05] ( 3, 12.00) ref -> x2 "arr expr"
-;* V81 tmp69 [V81,T27] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V82 tmp70 [V82,T52] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V83 tmp71 [V83,T53] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V84 tmp72 [V84,T44] ( 2, 0.10) ref -> x1 single-def "argument with side effect"
-; V85 tmp73 [V85,T54] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V86 tmp74 [V86,T55] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V87 tmp75 [V87,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V88 tmp76 [V88,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V89 cse0 [V89,T14] ( 3, 6.00) ref -> x14 "CSE - aggressive"
-; V90 cse1 [V90,T15] ( 3, 6.00) ref -> x0 "CSE - aggressive"
-; V91 cse2 [V91,T10] ( 4, 8.00) long -> x28 "CSE - aggressive"
-; V92 cse3 [V92,T16] ( 2, 4.00) ref -> x2 "CSE - aggressive"
-; V93 cse4 [V93,T06] ( 12, 11.70) long -> [fp+0x18] multi-def "CSE - aggressive"
-; V94 cse5 [V94,T18] ( 4, 5.04) int -> x26 "CSE - moderate"
+;* V49 tmp37 [V49,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp38 [V50,T23] ( 5, 4.97) ubyte -> x0 "Inline stloc first use temp"
+;* V51 tmp39 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
+;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
+;* V53 tmp41 [V53 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
+;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
+; V56 tmp44 [V56,T22] ( 12, 4.97) ref -> x21 class-hnd "Inline stloc first use temp" <System.Type>
+; V57 tmp45 [V57,T25] ( 3, 4.97) int -> x1 "guarded devirt return temp"
+;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V59 tmp47 [V59,T26] ( 3, 4.97) ubyte -> x1 "Inline return value spill temp"
+; V60 tmp48 [V60,T24] ( 5, 4.97) ubyte -> x0 "Inline stloc first use temp"
+;* V61 tmp49 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
+;* V62 tmp50 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V63 tmp51 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V64 tmp52 [V64,T53] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V65 tmp53 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V66 tmp54 [V66,T38] ( 3, 1.99) int -> x1
+; V67 tmp55 [V67,T40] ( 2, 1.99) ubyte -> x14 "Inline stloc first use temp"
+;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V69 tmp57 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V70 tmp58 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V71 tmp59 [V71,T29] ( 2, 3.98) byref -> x14 single-def "Inlining Arg"
+;* V72 tmp60 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V52.m_type (fldOffset=0x0)" P-INDEP
+; V73 tmp61 [V73,T32] ( 5, 2.98) ref -> x0 single-def "field V53.m_type (fldOffset=0x0)" P-INDEP
+; V74 tmp62 [V74,T39] ( 2, 1.99) ref -> x0 single-def "field V61.m_type (fldOffset=0x0)" P-INDEP
+;* V75 tmp63 [V75 ] ( 0, 0 ) long -> zero-ref "field V65.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V76 tmp64 [V76,T33] ( 3, 2.98) long -> x14 "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T05] ( 3, 12.00) ref -> x14 "arr expr"
+;* V78 tmp66 [V78,T28] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V79 tmp67 [V79,T54] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V80 tmp68 [V80,T55] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V81 tmp69 [V81,T46] ( 2, 0.10) ref -> x1 single-def "argument with side effect"
+; V82 tmp70 [V82,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V83 tmp71 [V83,T57] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V84 tmp72 [V84,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V85 tmp73 [V85,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V86 cse0 [V86,T14] ( 3, 6.00) ref -> x14 "CSE - aggressive"
+; V87 cse1 [V87,T15] ( 3, 6.00) ref -> x0 "CSE - aggressive"
+; V88 cse2 [V88,T09] ( 4, 8.00) long -> x28 "CSE - aggressive"
+; V89 cse3 [V89,T16] ( 2, 4.00) ref -> x14 "CSE - aggressive"
+; V90 cse4 [V90,T19] ( 4, 5.04) int -> x26 "CSE - moderate"
+; V91 rat0 [V91,T01] ( 5, 15.01) ref -> x15 class-hnd "replacement local" <System.RuntimeType>
+; V92 rat1 [V92,T18] ( 5, 5.11) ref -> x22 class-hnd "replacement local" <System.RuntimeType>
+; V93 rat2 [V93,T11] ( 5, 7.45) ref -> x20 class-hnd "replacement local" <System.RuntimeType>
;
; Lcl frame size = 16
@@ -130,13 +129,13 @@ G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr w25, [fp, #0x78] // [V09 arg9]
;; size=56 bbWeight=1 PerfScore 11.50
G_M32743_IG02: ; bbWeight=1, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
- cbz x24, G_M32743_IG45
+ cbz x24, G_M32743_IG47
cmp w2, #22
ccmp w3, #1, 0, eq
- bne G_M32743_IG46
+ bne G_M32743_IG48
;; size=16 bbWeight=1 PerfScore 3.00
G_M32743_IG03: ; bbWeight=1.01, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M32743_IG50
+ cbz x21, G_M32743_IG52
;; size=4 bbWeight=1.01 PerfScore 1.01
G_M32743_IG04: ; bbWeight=1.01, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
ldr w26, [x21, #0x08]
@@ -164,30 +163,33 @@ G_M32743_IG05: ; bbWeight=2.00, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x2
ubfiz x28, x27, #3, #32
ldr x0, [x14, x28]
; gcrRegs +[x0]
- cbz x0, G_M32743_IG48
+ cbz x0, G_M32743_IG50
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- str x1, [fp, #0x10] // [V27 tmp15]
- ; GC ptr vars +{V27}
+ str x1, [fp, #0x18] // [V25 tmp13]
+ ; GC ptr vars +{V25}
ldr x14, [x0]
; byrRegs -[x14]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x14, x2
- bne G_M32743_IG47
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #0xD1FFAB1E LSL #32
+ cmp x14, x15
+ bne G_M32743_IG49
+ ;; size=48 bbWeight=2.00 PerfScore 31.01
+G_M32743_IG06: ; bbWeight=2.00, gcVars=0000000000000010 {V25}, gcrefRegs=1F80003 {x0 x1 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
mov x15, x0
; gcrRegs +[x15]
- ;; size=52 bbWeight=2.00 PerfScore 32.01
-G_M32743_IG06: ; bbWeight=2.00, gcVars=0000000000000010 {V27}, gcrefRegs=1F88002 {x1 x15 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
cbz x15, G_M32743_IG09
- ;; size=4 bbWeight=2.00 PerfScore 2.00
+ ;; size=8 bbWeight=2.00 PerfScore 3.00
G_M32743_IG07: ; bbWeight=1.00, gcrefRegs=1F88002 {x1 x15 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr x14, [x15]
- cmp x14, x2
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #0xD1FFAB1E LSL #32
+ cmp x14, x12
beq G_M32743_IG09
- ;; size=12 bbWeight=1.00 PerfScore 4.50
+ ;; size=24 bbWeight=1.00 PerfScore 6.00
G_M32743_IG08: ; bbWeight=0.50, gcrefRegs=1F80002 {x1 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x15]
mov x15, xzr
@@ -196,76 +198,84 @@ G_M32743_IG08: ; bbWeight=0.50, gcrefRegs=1F80002 {x1 x19 x20 x21 x22 x23
G_M32743_IG09: ; bbWeight=2.00, gcrefRegs=1F88002 {x1 x15 x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
ldr w14, [x1, #0x08]
cmp w27, w14
- bhs G_M32743_IG44
+ bhs G_M32743_IG46
add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x28
- ; GC ptr vars -{V27}
+ ; GC ptr vars -{V25}
...
+16 (+6.90%) : 64726.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,17 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,301.84) int -> x19
+; V01 loc0 [V01,T01] ( 4,301.84) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,452.30) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,251.28) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,753.84) ref -> x15 class-hnd "spilling QMark2" <PerfLabTests.Foo[]>
-; V06 cse0 [V06,T05] ( 2,100.62) ref -> x23 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3,100.53) ref -> x22 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.63) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3,100.53) long -> x21 "CSE - aggressive"
-; V10 rat0 [V10,T09] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
-; V11 rat1 [V11,T08] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V03 cse0 [V03,T03] ( 2,100.62) ref -> x23 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4,100.53) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.63) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3,100.53) long -> x21 "CSE - aggressive"
+; V07 rat0 [V07,T07] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
+; V08 rat1 [V08,T06] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V09 rat2 [V09,T00] ( 5,703.58) ref -> x15 class-hnd "replacement local" <PerfLabTests.Foo[]>
;
; Lcl frame size = 8
@@ -33,10 +31,10 @@ G_M13964_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w19, [fp, #0x84]
;; size=24 bbWeight=0.01 PerfScore 0.07
G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr w20, [x14]
cmp w19, w20
bge G_M13964_IG11
movz x21, #0xD1FFAB1E
@@ -51,11 +49,11 @@ G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cbz x23, G_M13964_IG05
;; size=52 bbWeight=0.01 PerfScore 0.13
G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
+ ldr x14, [x23]
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #0xD1FFAB1E LSL #32
+ cmp x14, x15
beq G_M13964_IG05
;; size=24 bbWeight=0.01 PerfScore 0.03
G_M13964_IG04: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
@@ -75,45 +73,49 @@ G_M13964_IG04: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}
;; size=36 bbWeight=0 PerfScore 0.00
G_M13964_IG05: ; bbWeight=100.61, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x23, G_M13964_IG10
+ cbz x23, G_M13964_IG08
;; size=4 bbWeight=100.61 PerfScore 100.61
G_M13964_IG06: ; bbWeight=100.51, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x15, x22
+ ; gcrRegs +[x15]
+ cbnz x15, G_M13964_IG09
+ ;; size=8 bbWeight=100.51 PerfScore 150.77
+G_M13964_IG07: ; bbWeight=100.51, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
+ add x14, x21, #16
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ;; size=8 bbWeight=100.51 PerfScore 150.77
+G_M13964_IG08: ; bbWeight=100.61, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ add w19, w19, #1
+ cmp w19, w20
+ bge G_M13964_IG11
+ b G_M13964_IG05
+ ;; size=16 bbWeight=100.61 PerfScore 301.83
+G_M13964_IG09: ; bbWeight=50.26, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x15]
+ ldr x14, [x15]
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #0xD1FFAB1E LSL #32
+ cmp x14, x12
+ beq G_M13964_IG07
+ ;; size=24 bbWeight=50.26 PerfScore 301.53
+G_M13964_IG10: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M13964_IG09
- ;; size=12 bbWeight=100.51 PerfScore 201.02
-G_M13964_IG07: ; bbWeight=50.26, gcrefRegs=C08002 {x1 x15 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M13964_IG09
- ;; size=24 bbWeight=50.26 PerfScore 301.53
-G_M13964_IG08: ; bbWeight=25.13, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- ;; size=12 bbWeight=25.13 PerfScore 50.26
-G_M13964_IG09: ; bbWeight=100.51, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- add x14, x21, #16
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
- ;; size=8 bbWeight=100.51 PerfScore 150.77
-G_M13964_IG10: ; bbWeight=100.61, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w20
- blt G_M13964_IG05
- ;; size=12 bbWeight=100.61 PerfScore 201.22
+ b G_M13964_IG07
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M13964_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x22-x23]
+ ; gcrRegs -[x0 x15 x22-x23]
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -122,7 +124,7 @@ G_M13964_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 24, PerfScore 1005.64, instruction count 58, allocated bytes for code 232 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 248, prolog size 24, PerfScore 1005.74, instruction count 62, allocated bytes for code 248 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -133,7 +135,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+7.41%) : 85929.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,17 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf2.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,301.84) int -> x19
+; V01 loc0 [V01,T01] ( 4,301.84) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,452.30) ref -> x1 "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,251.28) long -> x2 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,753.84) ref -> x15 class-hnd "spilling QMark2" <PerfLabTests.CastingPerf2.Foo>
-; V06 cse0 [V06,T05] ( 2,100.62) ref -> x23 hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3,100.53) ref -> x22 "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.63) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3,100.53) long -> x21 "CSE - aggressive"
-; V10 rat0 [V10,T09] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
-; V11 rat1 [V11,T08] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V03 cse0 [V03,T03] ( 2,100.62) ref -> x23 hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4,100.53) ref -> x22 "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.63) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3,100.53) long -> x21 "CSE - aggressive"
+; V07 rat0 [V07,T07] ( 3, 0.04) ref -> x1 "Spilling to split statement for tree"
+; V08 rat1 [V08,T06] ( 5, 0.07) ref -> x23 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V09 rat2 [V09,T00] ( 5,703.58) ref -> x15 class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
;
; Lcl frame size = 8
@@ -33,10 +31,10 @@ G_M59156_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w19, [fp, #0x84]
;; size=24 bbWeight=0.01 PerfScore 0.07
G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr w20, [x0]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr w20, [x14]
cmp w19, w20
bge G_M59156_IG11
movz x21, #0xD1FFAB1E
@@ -51,11 +49,11 @@ G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cbz x23, G_M59156_IG05
;; size=52 bbWeight=0.01 PerfScore 0.13
G_M59156_IG03: ; bbWeight=0.01, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x23]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
+ ldr x14, [x23]
+ movz x15, #0xD1FFAB1E
+ movk x15, #0xD1FFAB1E LSL #16
+ movk x15, #0xD1FFAB1E LSL #32
+ cmp x14, x15
beq G_M59156_IG05
;; size=24 bbWeight=0.01 PerfScore 0.03
G_M59156_IG04: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref
@@ -71,45 +69,49 @@ G_M59156_IG04: ; bbWeight=0, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}
;; size=20 bbWeight=0 PerfScore 0.00
G_M59156_IG05: ; bbWeight=100.61, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x23, G_M59156_IG10
+ cbz x23, G_M59156_IG08
;; size=4 bbWeight=100.61 PerfScore 100.61
G_M59156_IG06: ; bbWeight=100.51, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ mov x15, x22
+ ; gcrRegs +[x15]
+ cbnz x15, G_M59156_IG09
+ ;; size=8 bbWeight=100.51 PerfScore 150.77
+G_M59156_IG07: ; bbWeight=100.51, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
+ add x14, x21, #80
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15]
+ ;; size=8 bbWeight=100.51 PerfScore 150.77
+G_M59156_IG08: ; bbWeight=100.61, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+ add w19, w19, #1
+ cmp w19, w20
+ bge G_M59156_IG11
+ b G_M59156_IG05
+ ;; size=16 bbWeight=100.61 PerfScore 301.83
+G_M59156_IG09: ; bbWeight=50.26, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x15]
+ ldr x14, [x15]
+ movz x12, #0xD1FFAB1E
+ movk x12, #0xD1FFAB1E LSL #16
+ movk x12, #0xD1FFAB1E LSL #32
+ cmp x14, x12
+ beq G_M59156_IG07
+ ;; size=24 bbWeight=50.26 PerfScore 301.53
+G_M59156_IG10: ; bbWeight=0, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
mov x1, x22
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M59156_IG09
- ;; size=12 bbWeight=100.51 PerfScore 201.02
-G_M59156_IG07: ; bbWeight=50.26, gcrefRegs=C08002 {x1 x15 x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- movz x2, #0xD1FFAB1E
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x0, x2
- beq G_M59156_IG09
- ;; size=24 bbWeight=50.26 PerfScore 301.53
-G_M59156_IG08: ; bbWeight=25.13, gcrefRegs=C00002 {x1 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- ;; size=12 bbWeight=25.13 PerfScore 50.26
-G_M59156_IG09: ; bbWeight=100.51, gcrefRegs=C08000 {x15 x22 x23}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- add x14, x21, #80
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
- ;; size=8 bbWeight=100.51 PerfScore 150.77
-G_M59156_IG10: ; bbWeight=100.61, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w20
- blt G_M59156_IG05
- ;; size=12 bbWeight=100.61 PerfScore 201.22
+ b G_M59156_IG07
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M59156_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x22-x23]
+ ; gcrRegs -[x0 x15 x22-x23]
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -118,7 +120,7 @@ G_M59156_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 216, prolog size 24, PerfScore 1005.64, instruction count 54, allocated bytes for code 216 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 232, prolog size 24, PerfScore 1005.74, instruction count 58, allocated bytes for code 232 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -129,7 +131,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_tiered.windows.arm64.checked.mch
-28 (-28.00%) : 5978.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-25.93%) : 22638.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x20]
mov fp, sp
str x1, [fp, #0x18]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [x1, #0x38]
+ ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
- ldr x2, [x20]
+ mov x0, x19
+ ldr x2, [x19]
ldr x2, [x2, #0x70]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M60617_IG05
- ;; size=44 bbWeight=1 PerfScore 19.50
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M60617_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-21.88%) : 21378.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -8,14 +8,13 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
-; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo>
+; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> x20 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V06 cse0 [V06,T05] ( 3, 3 ) long -> x21 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -25,51 +24,40 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x21, [sp, #0x28]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- mov x20, x1
- ; gcrRegs +[x20]
- mov w21, w2
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M29548_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x1
+ ; gcrRegs +[x19]
+ mov w20, w2
+ ;; size=28 bbWeight=1 PerfScore 5.50
+G_M29548_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x21, [x0, #0x38]
+ ldr x0, [x21]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- uxtb w2, w21
- mov x0, x20
+ uxtb w2, w20
+ mov x0, x19
movz x3, #0xD1FFAB1E // code for System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M29548_IG05
- ;; size=52 bbWeight=1 PerfScore 15.50
-G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M29548_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x21]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M29548_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=56 bbWeight=1 PerfScore 18.50
+G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 20, PerfScore 29.31, instruction count 32, allocated bytes for code 128 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 100, prolog size 20, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -80,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-1.80%) : 17731.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (Tier1)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 14 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 17, 13 ) ref -> x20 this class-hnd single-def <System.Xml.Serialization.FieldModel>
-; V01 arg1 [V01,T00] ( 17, 13.50) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo>
+; V00 this [V00,T00] ( 17, 13 ) ref -> x19 this class-hnd single-def <System.Xml.Serialization.FieldModel>
+; V01 arg1 [V01,T01] ( 15, 12.50) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo>
; V02 arg2 [V02,T05] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Type>
; V03 arg3 [V03,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <System.Xml.Serialization.TypeDesc>
; V04 loc0 [V04,T08] ( 9, 4 ) ref -> x21 class-hnd single-def <System.Reflection.FieldInfo>
@@ -17,107 +17,104 @@
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T03] ( 3, 6 ) ref -> x21 class-hnd single-def "non-inline candidate call" <System.Type>
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
-; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> x21 class-hnd single-def "non-inline candidate call" <System.Type>
-; V10 tmp4 [V10,T19] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 tmp5 [V11,T16] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.FieldInfo>
-; V12 tmp6 [V12,T20] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V13 tmp7 [V13,T17] ( 2, 2 ) ref -> x0 class-hnd "spilling QMark2" <System.Reflection.PropertyInfo>
-; V14 tmp8 [V14,T28] ( 2, 0 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <System.String>
-; V15 tmp9 [V15,T29] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String>
-; V16 tmp10 [V16,T30] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.String>
-; V17 tmp11 [V17,T24] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref
-;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
-; V20 tmp14 [V20,T22] ( 2, 1 ) int -> x14
-;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref
-;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
-; V23 tmp17 [V23,T23] ( 2, 1 ) int -> x14
-; V24 tmp18 [V24,T31] ( 2, 0 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <System.String>
-; V25 tmp19 [V25,T32] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String>
-; V26 tmp20 [V26,T33] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.String>
-; V27 tmp21 [V27,T25] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp22 [V28,T11] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
-;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
+; V09 tmp3 [V09,T09] ( 4, 4 ) ref -> x21 class-hnd single-def "non-inline candidate call" <System.Type>
+; V10 tmp4 [V10,T25] ( 2, 0 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <System.String>
+; V11 tmp5 [V11,T26] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String>
+; V12 tmp6 [V12,T27] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.String>
+; V13 tmp7 [V13,T21] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref
+;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
+; V16 tmp10 [V16,T19] ( 2, 1 ) int -> x14
+;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref
+;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
+; V19 tmp13 [V19,T20] ( 2, 1 ) int -> x14
+; V20 tmp14 [V20,T28] ( 2, 0 ) ref -> x19 class-hnd exact single-def "non-inline candidate call" <System.String>
+; V21 tmp15 [V21,T29] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String>
+; V22 tmp16 [V22,T30] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.String>
+; V23 tmp17 [V23,T22] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V24 tmp18 [V24,T10] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
+;* V26 tmp20 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+;* V28 tmp22 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V29 tmp23 [V29,T14] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V30 tmp24 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V32 tmp26 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V33 tmp27 [V33,T15] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
-;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V35 tmp29 [V35,T12] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V36 tmp30 [V36,T13] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V37 tmp31 [V37,T04] ( 3, 6 ) ref -> x21 single-def "argument with side effect"
-; V38 tmp32 [V38,T14] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V39 tmp33 [V39,T18] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V40 tmp34 [V40,T26] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V41 tmp35 [V41,T34] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
-; V42 tmp36 [V42,T35] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V43 tmp37 [V43,T27] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V44 tmp38 [V44,T36] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
-; V45 tmp39 [V45,T37] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V46 cse0 [V46,T02] ( 8, 7 ) long -> x24 "CSE - aggressive"
-; V47 cse1 [V47,T21] ( 4, 1.50) long -> x22 "CSE - moderate"
-; V48 cse2 [V48,T09] ( 6, 4 ) long -> x23 "CSE - moderate"
+; V31 tmp25 [V31,T15] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Reflection.FieldInfo>
+; V32 tmp26 [V32,T11] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V33 tmp27 [V33,T12] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V34 tmp28 [V34,T04] ( 3, 6 ) ref -> x21 single-def "argument with side effect"
+; V35 tmp29 [V35,T13] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V36 tmp30 [V36,T17] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V37 tmp31 [V37,T23] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V38 tmp32 [V38,T31] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
+; V39 tmp33 [V39,T32] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V40 tmp34 [V40,T16] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V41 tmp35 [V41,T24] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V42 tmp36 [V42,T33] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
+; V43 tmp37 [V43,T34] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V44 cse0 [V44,T02] ( 8, 7 ) long -> x23 "CSE - aggressive"
+; V45 cse1 [V45,T18] ( 4, 1.50) long -> x22 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M45586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
mov x21, x2
; gcrRegs +[x21]
mov x22, x3
; gcrRegs +[x22]
;; size=36 bbWeight=1 PerfScore 6.50
G_M45586_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x23, [x19]
- ldr x24, [x23, #0x48]
- ldr x1, [x24, #0x30]
+ ldr x1, [x20]
+ ldr x23, [x1, #0x48]
+ ldr x1, [x23, #0x30]
blr x1
- add x14, x20, #40
+ add x14, x19, #40
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- add x14, x20, #32
+ add x14, x19, #32
; byrRegs +[x14]
mov x15, x21
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x21]
; byrRegs -[x14]
- add x14, x20, #48
+ add x14, x19, #48
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x22]
; byrRegs -[x14]
- add x14, x20, #8
+ add x14, x19, #8
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x24, #0x38]
+ ldr x1, [x23, #0x38]
blr x1
mov x21, x0
; gcrRegs +[x21]
- mov x0, x19
- ldr x1, [x24, #0x30]
+ mov x0, x20
+ ldr x1, [x23, #0x30]
blr x1
mov x1, x0
; gcrRegs +[x1]
@@ -148,27 +145,27 @@ G_M45586_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr x7, [x7]
blr x7
; gcrRegs -[x1 x21]
- add x14, x20, #24
+ add x14, x19, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x0, [x20, #0x18]
+ ldr x0, [x19, #0x18]
; gcrRegs +[x0]
cmp x0, #0
cset x0, ne
; gcrRegs -[x0]
- strb w0, [x20, #0x3C]
- mov x0, x19
+ strb w0, [x19, #0x3C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x24, #0x38]
+ ldr x1, [x23, #0x38]
blr x1
mov x21, x0
; gcrRegs +[x21]
- mov x0, x19
- ldr x1, [x24, #0x30]
+ mov x0, x20
+ ldr x1, [x23, #0x30]
blr x1
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -211,8 +208,8 @@ G_M45586_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
mov w14, #1
tst w0, #32
cinc w14, w14, eq
- str w14, [x20, #0x38]
- add x14, x20, #16
+ str w14, [x19, #0x38]
+ add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
; gcrRegs +[x15]
@@ -222,14 +219,14 @@ G_M45586_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
b G_M45586_IG06
;; size=84 bbWeight=0.50 PerfScore 11.75
G_M45586_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x24, #0x38]
+ ldr x1, [x23, #0x38]
blr x1
mov x21, x0
; gcrRegs +[x21]
- mov x0, x19
- ldr x1, [x24, #0x30]
+ mov x0, x20
+ ldr x1, [x23, #0x30]
blr x1
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -275,8 +272,8 @@ G_M45586_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov w14, #1
cmp w0, #0
cinc w14, w14, ne
- str w14, [x20, #0x38]
- add x14, x20, #16
+ str w14, [x19, #0x38]
+ add x14, x19, #16
; byrRegs +[x14]
mov x15, x21
...
-8 (-1.36%) : 46855.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.Canon]:<.cctor>b4_0(System.Object):this (Tier1)
@@ -7,49 +7,49 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> [fp+0x20] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]>
-; V01 arg1 [V01,T00] ( 6, 5.50) ref -> x19 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd exact EH-live <<unknown class>>
-; V03 loc1 [V03,T11] ( 4, 4 ) ref -> x21 class-hnd single-def <<unknown class>>
-; V04 loc2 [V04,T17] ( 2, 1 ) int -> [fp+0x34] do-not-enreg[Z] EH-live
+; V00 this [V00,T07] ( 3, 3 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Object>
+; V02 loc0 [V02,T00] ( 10, 6 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <<unknown class>>
+; V03 loc1 [V03,T11] ( 4, 4 ) ref -> x22 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T17] ( 2, 1 ) int -> [fp+0x2C] 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 -> x19 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 ) long -> x1 "spilling helperCall"
-;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T02] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T03] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
-; V15 tmp8 [V15,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V16 tmp9 [V16 ] ( 2, 0 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
-;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken>
-; V18 tmp11 [V18 ] ( 2, 0 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V16._source (fldOffset=0x0)" P-DEP
-; V19 tmp12 [V19,T21] ( 2, 0 ) ref -> x1 "field V17._source (fldOffset=0x0)" P-INDEP
+; V11 tmp4 [V11,T02] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V13 tmp6 [V13,T03] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V14 tmp7 [V14,T20] ( 3, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V15 tmp8 [V15 ] ( 2, 0 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
+;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken>
+; V17 tmp10 [V17 ] ( 2, 0 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V15._source (fldOffset=0x0)" P-DEP
+; V18 tmp11 [V18,T21] ( 2, 0 ) ref -> x1 "field V16._source (fldOffset=0x0)" P-INDEP
+; V19 tmp12 [V19,T14] ( 2, 4 ) long -> x1 "argument with side effect"
; V20 tmp13 [V20,T13] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V21 tmp14 [V21,T14] ( 2, 4 ) long -> x2 "argument with side effect"
-; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
-; V23 cse0 [V23,T15] ( 3, 3 ) long -> x2 "CSE - aggressive"
+; V21 tmp14 [V21,T15] ( 2, 4 ) long -> x0 "argument with side effect"
+; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+; V23 cse0 [V23,T16] ( 3, 3 ) long -> x21 "CSE - aggressive"
; V24 cse1 [V24,T08] ( 6, 4.56) long -> x20 "CSE - aggressive"
; V25 rat0 [V25,T10] ( 3, 4.40) long -> x1 "Spilling to split statement for tree"
-; V26 rat1 [V26,T12] ( 3, 4 ) long -> x2 "runtime lookup"
-; V27 rat2 [V27,T04] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V26 rat1 [V26,T12] ( 3, 4 ) long -> x21 "runtime lookup"
+; V27 rat2 [V27,T04] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
; V28 rat3 [V28,T05] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
; V29 rat4 [V29,T06] ( 3, 5.60) long -> x0 "spilling expr"
; V30 rat5 [V30,T09] ( 3, 4.48) long -> x11 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M57110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x48]
- str x21, [sp, #0x58]
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x28] // [V16 tmp9]
+ str xzr, [fp, #0x20] // [V15 tmp8]
add x2, sp, #96
- stp x0, x2, [fp, #0x38] // [V22 PSPSym]
- str x0, [fp, #0x20] // [V00 this]
+ stp x0, x2, [fp, #0x30] // [V22 PSPSym]
+ str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
mov x19, x1
; gcrRegs +[x19]
@@ -60,8 +60,8 @@ G_M57110_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
mov x1, x20
ldr x2, [x1, #0x38]
ldr x2, [x2]
- ldr x2, [x2, #0x10]
- cbz x2, G_M57110_IG04
+ ldr x21, [x2, #0x10]
+ cbz x21, G_M57110_IG04
;; size=24 bbWeight=1 PerfScore 13.50
G_M57110_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -74,30 +74,27 @@ G_M57110_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov x2, x0
+ mov x21, x0
;; size=24 bbWeight=0.20 PerfScore 0.70
G_M57110_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x1, x2
- str x19, [fp, #0x18] // [V02 loc0]
- ; GC ptr vars +{V02}
- cbz x19, G_M57110_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M57110_IG06: ; bbWeight=0.50, gcVars=0000000000000082 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x3, [x19]
- cmp x3, x1
- bne G_M57110_IG08
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M57110_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0x18] // [V02 loc0]
+ mov x1, x21
+ mov x0, x1
+ mov x1, x19
; gcrRegs +[x1]
- ldr x21, [x1, #0x40]
- ; gcrRegs +[x21]
- cbnz x21, G_M57110_IG10
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x1 x21]
- ; GC ptr vars -{V02}
- mov x0, x2
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ str x0, [fp, #0x10] // [V02 loc0]
+ ; GC ptr vars +{V02}
+ cbz x0, G_M57110_IG06
+ ldr x22, [x0, #0x40]
+ ; gcrRegs +[x22]
+ cbnz x22, G_M57110_IG08
+ ;; size=32 bbWeight=1 PerfScore 8.50
+G_M57110_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
+ ; GC ptr vars -{V00 V02}
+ mov x0, x21
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -108,28 +105,26 @@ G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcrRegs -[x1 x19]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 6.50
-G_M57110_IG09: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+G_M57110_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M57110_IG10: ; bbWeight=1, gcVars=0000000000000082 {V00 V02}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x21]
- ; GC ptr vars +{V01 V02}
- ldr x1, [fp, #0x18] // [V02 loc0]
- ; gcrRegs +[x1]
- str xzr, [x1, #0x40]
+ ;; size=16 bbWeight=1 PerfScore 4.00
+G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000081 {V00 V02}, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0 x22]
+ ; GC ptr vars +{V00 V02}
+ str xzr, [x0, #0x40]
ldr x1, [x20, #0x38]
- ; gcrRegs -[x1]
ldr x1, [x1]
ldr x11, [x1, #0x18]
- cbz x11, G_M57110_IG12
- ;; size=24 bbWeight=1 PerfScore 13.00
-G_M57110_IG11: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- b G_M57110_IG13
+ cbz x11, G_M57110_IG10
+ ;; size=20 bbWeight=1 PerfScore 11.00
+G_M57110_IG09: ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M57110_IG11
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M57110_IG12: ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57110_IG10: ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -138,34 +133,32 @@ G_M57110_IG12: ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
; gcr arg pop 0
mov x11, x0
;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M57110_IG13: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ldr x1, [fp, #0x18] // [V02 loc0]
- ; gcrRegs +[x1]
- ldrsh w1, [x1, #0x48]
- ; gcrRegs -[x1]
- mov x0, x21
+G_M57110_IG11: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
+ ldrsh w1, [x0, #0x48]
+ mov x0, x22
ldr x2, [x11]
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- str w0, [fp, #0x34] // [V04 loc2]
+ str w0, [fp, #0x2C] // [V04 loc2]
;; size=24 bbWeight=1 PerfScore 10.50
-G_M57110_IG14: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG12: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x1, [x0, #0x08]
cmp x1, #32
- ble G_M57110_IG17
+ ble G_M57110_IG15
;; size=20 bbWeight=1 PerfScore 10.50
-G_M57110_IG15: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG13: ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
ldr x11, [x0, #0x20]
- cbz x11, G_M57110_IG17
+ cbz x11, G_M57110_IG15
;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M57110_IG16: ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- b G_M57110_IG18
+G_M57110_IG14: ; bbWeight=0.64, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ b G_M57110_IG16
;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M57110_IG17: ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57110_IG15: ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -174,20 +167,18 @@ G_M57110_IG17: ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
; gcr arg pop 0
mov x11, x0
;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M57110_IG18: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ldr x1, [fp, #0x18] // [V02 loc0]
- ; gcrRegs +[x1]
- ldrsh w1, [x1, #0x48]
- ; gcrRegs -[x1]
- mov x0, x21
+G_M57110_IG16: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x10] // [V02 loc0]
; gcrRegs +[x0]
+ ldrsh w1, [x0, #0x48]
+ mov x0, x22
ldr x2, [x11]
blr x2
- ; gcrRegs -[x21]
+ ; gcrRegs -[x22]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V02 loc0]
...
+4 (+0.40%) : 15998.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
@@ -12,53 +12,47 @@
; V01 arg1 [V01,T07] ( 11, 7.50) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T02] ( 19, 19 ) long -> [fp+0x18] do-not-enreg[Z] EH-live
; V03 loc1 [V03,T15] ( 5, 4 ) long -> x20
-; V04 loc2 [V04,T24] ( 2, 2 ) long -> x0
-; V05 loc3 [V05,T28] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T22] ( 2, 2 ) long -> x0
+; V05 loc3 [V05,T26] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T03] ( 5, 16.50) int -> x2
-; V07 loc5 [V07,T25] ( 2, 2 ) long -> x0
+; V07 loc5 [V07,T23] ( 2, 2 ) long -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T16] ( 2, 4 ) byref -> x21 single-def "impAppendStmt"
; V10 tmp2 [V10,T13] ( 3, 6 ) byref -> x0 single-def "dup spill"
-; V11 tmp3 [V11,T22] ( 2, 2 ) byref -> x22 single-def "impAppendStmt"
-; V12 tmp4 [V12,T19] ( 3, 3 ) byref -> x21 single-def "dup spill"
-;* V13 tmp5 [V13,T31] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V14 tmp6 [V14,T23] ( 2, 2 ) ref -> x19 class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp7 [V15,T04] ( 2, 16 ) byref -> x24 "impAppendStmt"
-; V16 tmp8 [V16,T01] ( 3, 24 ) byref -> x0 "dup spill"
-;* V17 tmp9 [V17,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V18 tmp10 [V18,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V21 tmp13 [V21,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp"
-;* V22 tmp14 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V23 tmp15 [V23,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object>
-;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V25 tmp17 [V25 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V26 tmp18 [V26,T34] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V27 tmp19 [V27,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V28 tmp20 [V28,T09] ( 2, 8 ) byref -> x0 "Inlining Arg"
-; V29 tmp21 [V29,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp"
-;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V31 tmp23 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V32 tmp24 [V32,T35] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V33 tmp25 [V33,T21] ( 4, 2 ) long -> x0 "Inline stloc first use temp"
-;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V36 tmp28 [V36,T26] ( 2, 2 ) long -> x0 "field V19._handle (fldOffset=0x0)" P-INDEP
-; V37 tmp29 [V37,T10] ( 2, 8 ) long -> x0 "field V24._handle (fldOffset=0x0)" P-INDEP
-; V38 tmp30 [V38,T29] ( 2, 1 ) long -> x0 "field V30._handle (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T36] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V40 tmp32 [V40,T37] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V41 tmp33 [V41,T38] ( 2, 0 ) ref -> x20 "argument with side effect"
-; V42 tmp34 [V42,T39] ( 2, 0 ) ref -> x2 "argument with side effect"
-; V43 PSPSym [V43,T33] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-;* V44 cse0 [V44 ] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V45 cse1 [V45,T20] ( 3, 2.50) ref -> x0 "CSE - moderate"
-; V46 cse2 [V46,T12] ( 5, 6 ) int -> x22 multi-def "CSE - aggressive"
-; V47 cse3 [V47,T11] ( 4, 6.50) long -> x21 "CSE - aggressive"
-; V48 cse4 [V48,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate"
-; V49 cse5 [V49,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
-; V50 cse6 [V50,T18] ( 4, 2 ) long -> registers multi-def "CSE - moderate"
+; V11 tmp3 [V11,T21] ( 2, 2 ) byref -> x22 single-def "impAppendStmt"
+; V12 tmp4 [V12,T18] ( 3, 3 ) byref -> x21 single-def "dup spill"
+; V13 tmp5 [V13,T04] ( 2, 16 ) byref -> x24 "impAppendStmt"
+; V14 tmp6 [V14,T01] ( 3, 24 ) byref -> x0 "dup spill"
+;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V17 tmp9 [V17,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp"
+;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V19 tmp11 [V19,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object>
+;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V21 tmp13 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V22 tmp14 [V22,T29] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V23 tmp15 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 tmp16 [V24,T09] ( 2, 8 ) byref -> x0 "Inlining Arg"
+; V25 tmp17 [V25,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp"
+;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V28 tmp20 [V28,T30] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V29 tmp21 [V29,T20] ( 4, 2 ) long -> x0 "Inline stloc first use temp"
+;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
+; V32 tmp24 [V32,T24] ( 2, 2 ) long -> x0 "field V15._handle (fldOffset=0x0)" P-INDEP
+; V33 tmp25 [V33,T10] ( 2, 8 ) long -> x0 "field V20._handle (fldOffset=0x0)" P-INDEP
+; V34 tmp26 [V34,T27] ( 2, 1 ) long -> x0 "field V26._handle (fldOffset=0x0)" P-INDEP
+; V35 tmp27 [V35,T31] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V36 tmp28 [V36,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V37 tmp29 [V37,T33] ( 2, 0 ) ref -> x20 "argument with side effect"
+; V38 tmp30 [V38,T34] ( 2, 0 ) ref -> x2 "argument with side effect"
+; V39 PSPSym [V39,T28] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V40 cse0 [V40,T12] ( 5, 6 ) int -> registers multi-def "CSE - aggressive"
+; V41 cse1 [V41,T19] ( 3, 2.50) ref -> x0 "CSE - moderate"
+; V42 cse2 [V42,T11] ( 4, 6.50) long -> x21 "CSE - aggressive"
+; V43 cse3 [V43,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate"
+; V44 cse4 [V44,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -70,7 +64,7 @@ G_M14417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x25, [sp, #0x58]
mov fp, sp
add x2, sp, #96
- str x2, [fp, #0x20] // [V43 PSPSym]
+ str x2, [fp, #0x20] // [V39 PSPSym]
str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
mov x19, x1
@@ -85,13 +79,13 @@ G_M14417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=8 bbWeight=1 PerfScore 1.50
G_M14417_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
bne G_M14417_IG05
- ldr w22, [x19, #0x08]
- mov w1, w22
+ ldr w21, [x19, #0x08]
+ mov w1, w21
add x20, x1, #1
b G_M14417_IG06
;; size=40 bbWeight=0.50 PerfScore 5.50
@@ -167,13 +161,14 @@ G_M14417_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x0, x1
bne G_M14417_IG22
mov w2, wzr
- ldr w22, [x19, #0x08]
+ ldr w0, [x19, #0x08]
+ sxtw w22, w0
cmp w22, #0
ble G_M14417_IG15
add x19, x19, #16
; gcrRegs -[x19]
; byrRegs +[x19]
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M14417_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [fp, #0x18] // [V02 loc0]
add w23, w2, #1
@@ -448,7 +443,7 @@ G_M14417_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 992, prolog size 40, PerfScore 236.00, instruction count 248, allocated bytes for code 992 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
+; Total bytes of code 996, prolog size 40, PerfScore 236.25, instruction count 249, allocated bytes for code 996 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
; ============================================================
Unwind Info:
@@ -459,7 +454,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 225 (0x000e1) Actual length = 900 (0x000384)
+ Function Length : 226 (0x000e2) Actual length = 904 (0x000388)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.windows.arm64.checked.mch
-24 (-28.57%) : 591793.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,12 +8,11 @@
; 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) long -> x19 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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 -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -22,40 +21,30 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x1, [fp, #0x10]
- mov x19, x1
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ldr x0, [x1, #0x38]
+ ldr x19, [x0]
+ mov x0, x19
mov x1, x2
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1-x2] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M51557_IG05
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M51557_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M51557_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=32 bbWeight=1 PerfScore 10.00
+G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 19.81, instruction count 21, allocated bytes for code 84 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 17.50, instruction count 15, allocated bytes for code 60 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 1311.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-44 (-23.40%) : 490103.dasm - MyCounter`1[System.__Canon]:DecrementSystem.__Canon:this (FullOpts)
@@ -7,17 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 4 ) ref -> x20 this class-hnd single-def <MyCounter`1[System.__Canon]>
-; V01 TypeCtx [V01,T01] ( 6, 4.45) long -> x19 single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.__Canon>
+; V00 this [V00,T01] ( 4, 4 ) ref -> x20 this class-hnd single-def <MyCounter`1[System.__Canon]>
+; V01 TypeCtx [V01,T00] ( 6, 5.20) long -> x19 single-def
+; V02 loc0 [V02,T04] ( 3, 3 ) ref -> x21 ld-addr-op class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T06] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T07] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 7, 9 ) ref -> x21 class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp4 [V07,T05] ( 4, 4.25) long -> x0 "spilling helperCall"
-;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V09 tmp6 [V09,T02] ( 4, 6.25) ref -> x15 class-hnd "spilling QMark2" <System.__Canon>
-; V10 rat0 [V10,T04] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V04 tmp1 [V04,T03] ( 3, 4 ) long -> x0 "spilling helperCall"
+; V05 rat0 [V05,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -32,31 +27,14 @@ G_M51755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
;; size=28 bbWeight=1 PerfScore 5.50
G_M51755_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
- mov x21, x1
- ; gcrRegs +[x21]
- cbz x21, G_M51755_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M51755_IG03: ; bbWeight=0.25, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x21]
- ldr x2, [x19, #0x38]
- ldr x2, [x2]
- cmp x0, x2
- beq G_M51755_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M51755_IG04: ; bbWeight=0.12, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
mov x21, x0
; gcrRegs +[x21]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M51755_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- mov x0, x21
- ; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
@@ -66,50 +44,39 @@ G_M51755_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
; gcrRegs -[x0]
ldr x0, [x19, #0x38]
ldr x0, [x0, #0x10]
- cbz x0, G_M51755_IG07
- ;; size=40 bbWeight=1 PerfScore 13.50
-G_M51755_IG06: ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- b G_M51755_IG08
+ cbz x0, G_M51755_IG04
+ ;; size=56 bbWeight=1 PerfScore 23.50
+G_M51755_IG03: ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ b G_M51755_IG05
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M51755_IG07: ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M51755_IG04: ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M51755_IG08: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- mov x15, x21
- ; gcrRegs +[x15]
- ldr x1, [x15]
- cmp x1, x0
- beq G_M51755_IG10
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M51755_IG09: ; bbWeight=0.12, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
+G_M51755_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x1, x21
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1 x21] +[x0]
- mov x15, x0
- ; gcrRegs +[x15]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M51755_IG10: ; bbWeight=1, gcrefRegs=108000 {x15 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
add x14, x20, #8
; byrRegs +[x14]
+ mov x15, x0
+ ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20]
+ ; gcrRegs -[x0 x15 x20]
; byrRegs -[x14]
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M51755_IG11: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 3.50
+G_M51755_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 188, prolog size 20, PerfScore 39.53, instruction count 47, allocated bytes for code 188 (MethodHash=3e1435d4) for method MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
+; Total bytes of code 144, prolog size 20, PerfScore 38.90, instruction count 36, allocated bytes for code 144 (MethodHash=3e1435d4) for method MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +87,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.93%) : 579295.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
@@ -8,23 +8,21 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 18, 10.50) ref -> x19 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V02 loc1 [V02,T05] ( 3, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 5.50) ref -> x19 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
+; V01 loc0 [V01,T01] ( 12, 6 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V02 loc1 [V02,T04] ( 3, 1.50) ref -> x21 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp2 [V05,T01] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp3 [V06,T06] ( 3, 1.50) int -> x2 "Inline return value spill temp"
-; V07 tmp4 [V07,T07] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T08] ( 3, 1.50) int -> x2 "Inline return value spill temp"
-; V09 tmp6 [V09,T09] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
-; V10 tmp7 [V10,T02] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref
-;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp11 [V14,T04] ( 2, 2 ) int -> x0 "argument with side effect"
-; V15 cse0 [V15,T10] ( 3, 1.50) long -> x20 "CSE - moderate"
-; V16 cse1 [V16,T11] ( 3, 1.50) long -> x20 "CSE - moderate"
+; V04 tmp1 [V04,T05] ( 3, 1.50) int -> x2 "Inline return value spill temp"
+; V05 tmp2 [V05,T06] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
+; V06 tmp3 [V06,T07] ( 3, 1.50) int -> x2 "Inline return value spill temp"
+; V07 tmp4 [V07,T08] ( 3, 1.50) int -> x2 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T02] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref
+;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V12 tmp9 [V12,T03] ( 2, 2 ) int -> x0 "argument with side effect"
+; V13 cse0 [V13,T09] ( 3, 1.50) long -> x21 "CSE - moderate"
+; V14 cse1 [V14,T10] ( 3, 1.50) long -> x20 "CSE - moderate"
;
; Lcl frame size = 8
@@ -48,13 +46,15 @@ G_M17935_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=24 bbWeight=1 PerfScore 4.00
G_M17935_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w0, [x19, #0x20]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ldr w0, [x20, #0x20]
and w2, w0, #63
cbz w2, G_M17935_IG04
b G_M17935_IG05
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M17935_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M17935_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x20
; gcrRegs +[x0]
mov w1, #63
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -65,32 +65,32 @@ G_M17935_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
sxtw w2, w0
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M17935_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M17935_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w2, #21
bne G_M17935_IG06
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x20, [x1, #0x60]
ldr x1, [x20]
+ ldr x21, [x1, #0x60]
+ ldr x1, [x21]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M17935_IG09
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x20, #0x08]
+ ldr x1, [x21, #0x08]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M17935_IG09
;; size=48 bbWeight=0.50 PerfScore 9.25
-G_M17935_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x20]
+G_M17935_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x20, #0x20]
and w2, w0, #63
cbz w2, G_M17935_IG07
b G_M17935_IG08
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M17935_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
+G_M17935_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x20
; gcrRegs +[x0]
mov w1, #63
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -101,10 +101,10 @@ G_M17935_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
sxtw w2, w0
;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M17935_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M17935_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w2, #20
blt G_M17935_IG09
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:get_IsDelegate():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
@@ -114,8 +114,8 @@ G_M17935_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
cbz w0, G_M17935_IG10
;; size=36 bbWeight=0.50 PerfScore 4.25
-G_M17935_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+G_M17935_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:get_HasInstantiation():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
@@ -139,13 +139,13 @@ G_M17935_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
cbz w0, G_M17935_IG10
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
+ ldr x1, [x20]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x38]
blr x1
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x20]
cbnz w0, G_M17935_IG10
mov x0, x19
; gcrRegs +[x0]
@@ -188,7 +188,7 @@ G_M17935_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 432, prolog size 16, PerfScore 69.25, instruction count 108, allocated bytes for code 432 (MethodHash=05dcb9f0) for method Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
+; Total bytes of code 436, prolog size 16, PerfScore 69.50, instruction count 109, allocated bytes for code 436 (MethodHash=05dcb9f0) for method Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -199,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+1.19%) : 540482.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort
@@ -8,84 +8,84 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 7, 58 ) long -> [fp+0x48] do-not-enreg[Z] EH-live
-; V01 arg1 [V01,T19] ( 3, 10 ) short -> [fp+0x44] EH-live single-def
-; V02 arg2 [V02,T09] ( 7, 42 ) byref -> [fp+0x18] EH-live single-def
-; V03 arg3 [V03,T16] ( 5, 26 ) byref -> [fp+0x10] EH-live single-def
+; V00 arg0 [V00,T07] ( 7, 58 ) long -> [fp+0x58] do-not-enreg[Z] EH-live
+; V01 arg1 [V01,T19] ( 3, 10 ) short -> [fp+0x54] EH-live single-def
+; V02 arg2 [V02,T09] ( 7, 42 ) byref -> [fp+0x28] EH-live single-def
+; V03 arg3 [V03,T16] ( 5, 26 ) byref -> [fp+0x20] EH-live single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V05 loc1 [V05,T33] ( 0, 0 ) ushort -> zero-ref EH-live single-def
-; V06 loc2 [V06,T31] ( 5, 17 ) double -> [fp+0x38] do-not-enreg[Z] EH-live
+;* V05 loc1 [V05,T31] ( 0, 0 ) ushort -> zero-ref EH-live single-def
+; V06 loc2 [V06,T29] ( 5, 17 ) double -> [fp+0x48] do-not-enreg[Z] EH-live
; V07 loc3 [V07,T21] ( 6, 6 ) ref -> x20 class-hnd single-def <<unknown class>>
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc5 [V09,T18] ( 3, 24 ) byte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11 ] ( 9, 9 ) struct (24) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
-; V12 tmp2 [V12,T22] ( 2, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-; V13 tmp3 [V13,T26] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 tmp4 [V14,T23] ( 2, 4 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp5 [V15,T00] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V16 tmp6 [V16,T01] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
-; V17 tmp7 [V17,T02] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <System.Char>
-; V18 tmp8 [V18,T03] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
-; V19 tmp9 [V19,T08] ( 3, 48 ) int -> x0 "dup spill"
-; V20 tmp10 [V20,T14] ( 2, 32 ) int -> x1 "impSpillLclRefs"
-; V21 tmp11 [V21,T15] ( 2, 32 ) int -> x0 "dup spill"
-;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V11 tmp1 [V11 ] ( 9, 9 ) struct (24) [fp+0x30] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
+; V12 tmp2 [V12,T24] ( 2, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V13 tmp3 [V13,T00] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V14 tmp4 [V14,T01] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
+; V15 tmp5 [V15,T02] ( 3,192 ) ref -> x21 class-hnd exact "Single-def Box Helper" <System.Char>
+; V16 tmp6 [V16,T03] ( 3,192 ) ref -> x21 "inline UNBOX clone1"
+; V17 tmp7 [V17,T08] ( 3, 48 ) int -> x0 "dup spill"
+; V18 tmp8 [V18,T14] ( 2, 32 ) int -> x1 "impSpillLclRefs"
+; V19 tmp9 [V19,T15] ( 2, 32 ) int -> x0 "dup spill"
+;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V28 tmp18 [V28,T32] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <ushort[]>
-;* V29 tmp19 [V29 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V31 tmp21 [V31,T17] ( 4, 26 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.String>
-;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V33 tmp23 [V33,T20] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V34 tmp24 [V34,T27] ( 2, 4 ) long -> x2 "argument with side effect"
-; V35 tmp25 [V35,T28] ( 2, 4 ) long -> x2 "argument with side effect"
-; V36 tmp26 [V36,T24] ( 3, 6 ) int -> x14 "MD array shared temp"
-; V37 tmp27 [V37,T25] ( 3, 6 ) int -> x12 "MD array shared temp"
-; V38 PSPSym [V38,T30] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T10] ( 2, 36 ) int -> x22 hoist "CSE - aggressive"
-; V40 cse1 [V40,T06] ( 4, 72 ) long -> x20 hoist multi-def "CSE - aggressive"
-; V41 cse2 [V41,T05] ( 5, 76 ) long -> x20 "CSE - aggressive"
-; V42 cse3 [V42,T04] ( 7, 78 ) long -> x21 multi-def "CSE - aggressive"
-; V43 cse4 [V43,T11] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
-; V44 cse5 [V44,T12] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
-; V45 cse6 [V45,T13] ( 4, 32 ) int -> x0 "CSE - aggressive"
-; V46 cse7 [V46,T29] ( 3, 3 ) int -> xip0 "CSE - moderate"
+; V26 tmp16 [V26,T30] ( 3, 0 ) ref -> x0 class-hnd exact single-def "dup spill" <ushort[]>
+;* V27 tmp17 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V29 tmp19 [V29,T17] ( 4, 26 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.String>
+;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+;* V31 tmp21 [V31,T20] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V32 tmp22 [V32,T25] ( 2, 4 ) long -> x2 "argument with side effect"
+; V33 tmp23 [V33,T26] ( 2, 4 ) long -> x2 "argument with side effect"
+; V34 tmp24 [V34,T22] ( 3, 6 ) int -> x0 "MD array shared temp"
+; V35 tmp25 [V35,T23] ( 3, 6 ) int -> x2 "MD array shared temp"
+; V36 PSPSym [V36,T28] ( 1, 1 ) long -> [fp+0x60] do-not-enreg[V] "PSPSym"
+; V37 cse0 [V37,T10] ( 2, 36 ) int -> x22 hoist "CSE - aggressive"
+; V38 cse1 [V38,T06] ( 4, 72 ) long -> x20 hoist multi-def "CSE - aggressive"
+; V39 cse2 [V39,T05] ( 5, 76 ) long -> x20 "CSE - aggressive"
+; V40 cse3 [V40,T04] ( 7, 78 ) long -> x21 multi-def "CSE - aggressive"
+; V41 cse4 [V41,T11] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
+; V42 cse5 [V42,T12] ( 2, 36 ) long -> x19 hoist "CSE - aggressive"
+; V43 cse6 [V43,T13] ( 4, 32 ) int -> x0 "CSE - aggressive"
+; V44 cse7 [V44,T27] ( 3, 3 ) int -> x3 "CSE - moderate"
+; TEMP_01 byref -> [fp+0x18]
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M19405_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x58]
- stp x21, x22, [sp, #0x68]
- str x23, [sp, #0x78]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x68]
+ stp x21, x22, [sp, #0x78]
+ str x23, [sp, #0x88]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V11 tmp1], [V11 tmp1+0x08]
- str xzr, [fp, #0x30] // [V11 tmp1+0x10]
- add x4, sp, #128
- stp x0, x4, [fp, #0x48] // [V00 arg0], [V38 PSPSym]
- str w1, [fp, #0x44] // [V01 arg1]
- stp x3, x2, [fp, #0x10] // [V03 arg3], [V02 arg2]
+ stp xzr, xzr, [fp, #0x30] // [V11 tmp1], [V11 tmp1+0x08]
+ str xzr, [fp, #0x40] // [V11 tmp1+0x10]
+ str xzr, [fp, #0x18] // [TEMP_01]
+ add x4, sp, #144
+ stp x0, x4, [fp, #0x58] // [V00 arg0], [V36 PSPSym]
+ str w1, [fp, #0x54] // [V01 arg1]
+ stp x3, x2, [fp, #0x20] // [V03 arg3], [V02 arg2]
; GC ptr vars +{V02 V03}
mov x19, x2
; byrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
+ ;; size=52 bbWeight=1 PerfScore 11.50
G_M19405_IG02: ; bbWeight=1, gcVars=0000000000010200 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
mov w2, #5
- str w2, [fp, #0x20] // [V11 tmp1]
+ str w2, [fp, #0x30] // [V11 tmp1]
mov w2, #24
- str w2, [fp, #0x24] // [V11 tmp1+0x04]
+ str w2, [fp, #0x34] // [V11 tmp1+0x04]
mov w2, #65
- str w2, [fp, #0x28] // [V11 tmp1+0x08]
+ str w2, [fp, #0x38] // [V11 tmp1+0x08]
mov w2, #9
- str w2, [fp, #0x2C] // [V11 tmp1+0x0c]
+ str w2, [fp, #0x3C] // [V11 tmp1+0x0c]
mov w2, #29
- str w2, [fp, #0x30] // [V11 tmp1+0x10]
- add x2, fp, #32 // [V11 tmp1]
+ str w2, [fp, #0x40] // [V11 tmp1+0x10]
+ add x2, fp, #48 // [V11 tmp1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,12 +94,12 @@ G_M19405_IG02: ; bbWeight=1, gcVars=0000000000010200 {V02 V03}, gcrefRegs
; gcrRegs +[x0]
; gcr arg pop 0
ldr d16, [@RWD00]
- str d16, [fp, #0x38] // [V06 loc2]
+ str d16, [fp, #0x48] // [V06 loc2]
mov w2, #41
- str w2, [fp, #0x20] // [V11 tmp1]
+ str w2, [fp, #0x30] // [V11 tmp1]
mov w2, #15
- str w2, [fp, #0x24] // [V11 tmp1+0x04]
- add x2, fp, #32 // [V11 tmp1]
+ str w2, [fp, #0x34] // [V11 tmp1+0x04]
+ add x2, fp, #48 // [V11 tmp1]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -122,49 +122,52 @@ G_M19405_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
+ ldr w0, [x20, #0x18]
; gcrRegs -[x0]
+ mov w2, #26
+ sub w0, w2, w0
+ ldp w2, w3, [x20, #0x10]
+ cmp w0, w2
+ bhs G_M19405_IG15
+ ldr w2, [x20, #0x1C]
+ mov w4, #65
+ sub w2, w4, w2
+ cmp w2, w3
+ bhs G_M19405_IG15
+ madd w0, w0, w3, w2
+ ubfiz x0, x0, #3, #32
+ add x0, x0, #32
+ add x14, x20, x0
+ ; byrRegs +[x14]
+ str x14, [fp, #0x18] // [TEMP_01]
+ movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1] +[x0]
+ ; gcrRegs -[x1 x20] +[x0]
+ ; byrRegs -[x14]
; gcr arg pop 0
+ ldr x14, [fp, #0x18] // [TEMP_01]
+ ; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
- ldr w14, [x20, #0x18]
- mov w12, #26
- sub w14, w12, w14
- ldp w12, wip0, [x20, #0x10]
- cmp w14, w12
- bhs G_M19405_IG15
- ldr w12, [x20, #0x1C]
- mov w0, #65
- ; gcrRegs -[x0]
- sub w12, w0, w12
- cmp w12, wip0
- bhs G_M19405_IG15
- madd w14, w14, wip0, w12
- ubfiz x14, x14, #3, #32
- add x14, x14, #32
- add x14, x20, x14
- ; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=108 bbWeight=1 PerfScore 25.50
+ ;; size=116 bbWeight=1 PerfScore 28.50
G_M19405_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- ldr x19, [fp, #0x18] // [V02 arg2]
+ ldr x19, [fp, #0x28] // [V02 arg2]
; byrRegs +[x19]
;; size=4 bbWeight=8 PerfScore 16.00
G_M19405_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr d16, [fp, #0x38] // [V06 loc2]
+ ldr d16, [fp, #0x48] // [V06 loc2]
fmov d17, #27.0000
fmul d16, d16, d17
- str d16, [fp, #0x38] // [V06 loc2]
+ str d16, [fp, #0x48] // [V06 loc2]
;; size=16 bbWeight=4 PerfScore 26.00
G_M19405_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldrh w0, [fp, #0x48] // [V00 arg0]
+ ldrh w0, [fp, #0x58] // [V00 arg0]
cbz w0, G_M19405_IG08
movz x20, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x20, #0xD1FFAB1E LSL #16
@@ -191,7 +194,7 @@ G_M19405_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; gcr arg pop 0
cmp x22, x0
beq G_M19405_IG08
- ldrsb x0, [fp, #0x48] // [V00 arg0]
+ ldrsb x0, [fp, #0x58] // [V00 arg0]
; gcrRegs -[x0]
uxth w22, w0
; gcrRegs -[x22]
@@ -231,7 +234,7 @@ G_M19405_IG09: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov x21, x0
...
+12 (+2.52%) : 267638.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b_100(System.Object):this (Tier1)
@@ -8,25 +8,25 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ThreadPoolTaskScheduler+<>c>
-; V01 arg1 [V01,T02] ( 6, 4.12) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T03] ( 6, 4 ) ref -> x19 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,T12] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 8, 10.75) ref -> x20 class-hnd "spilling QMark2" <System.Threading.Tasks.Task>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V07 tmp5 [V07,T07] ( 4, 2.50) ubyte -> x1 "Inline return value spill temp"
-; V08 tmp6 [V08,T04] ( 4, 3 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V09 tmp7 [V09,T13] ( 3, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V10 tmp8 [V10,T08] ( 3, 2.34) byref -> x1 single-def "Inlining Arg"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V12 tmp10 [V12,T14] ( 2, 1 ) int -> x0 "Inline stloc first use temp"
-; V13 tmp11 [V13,T10] ( 2, 2 ) byref -> x1 single-def "argument with side effect"
-; V14 cse0 [V14,T03] ( 7, 5.50) byref -> x19 "CSE - aggressive"
-; V15 cse1 [V15,T11] ( 3, 1.50) ref -> x1 "CSE - moderate"
-; V16 rat0 [V16,T09] ( 3, 2 ) byref -> x21 "TLS field access"
-; V17 rat1 [V17,T05] ( 3, 3 ) long -> x1 "TLS access"
-; V18 rat2 [V18,T06] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
-; V19 rat3 [V19,T01] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <System.Threading.Tasks.Task>
+;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V04 tmp2 [V04,T00] ( 5, 8 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V06 tmp4 [V06,T08] ( 4, 2.50) ubyte -> x1 "Inline return value spill temp"
+; V07 tmp5 [V07,T05] ( 4, 3 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V08 tmp6 [V08,T13] ( 3, 1 ) ubyte -> x1 "Inline return value spill temp"
+; V09 tmp7 [V09,T09] ( 3, 2.34) byref -> x1 single-def "Inlining Arg"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V11 tmp9 [V11,T14] ( 2, 1 ) int -> x0 "Inline stloc first use temp"
+; V12 tmp10 [V12,T11] ( 2, 2 ) byref -> x1 single-def "argument with side effect"
+; V13 cse0 [V13,T04] ( 7, 5.50) byref -> x19 "CSE - aggressive"
+; V14 cse1 [V14,T12] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V15 rat0 [V15,T10] ( 3, 2 ) byref -> x21 "TLS field access"
+; V16 rat1 [V16,T06] ( 3, 3 ) long -> x1 "TLS access"
+; V17 rat2 [V17,T07] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
+; V18 rat3 [V18,T01] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V19 rat4 [V19,T02] ( 5, 7 ) ref -> x20 class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 8
@@ -49,7 +49,7 @@ G_M60851_IG03: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M60851_IG23
+ bne G_M60851_IG22
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M60851_IG04: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
cbnz x2, G_M60851_IG06
@@ -72,29 +72,18 @@ G_M60851_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M60851_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x20, x19
; gcrRegs +[x20]
- cbz x20, G_M60851_IG09
+ cbz x20, G_M60851_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M60851_IG07: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- beq G_M60851_IG09
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M60851_IG08: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
- mov x0, x1
- mov x1, x19
- ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1 x19] +[x0]
- ; gcr arg pop 0
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=16 bbWeight=0.12 PerfScore 0.31
-G_M60851_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+G_M60851_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x20]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x1, x0
+ bne G_M60851_IG23
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M60851_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
add x19, x20, #52
; byrRegs +[x19]
ldapr w1, [x19]
@@ -105,31 +94,31 @@ G_M60851_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldapr x1, [x1]
; gcrRegs +[x1]
; byrRegs -[x1]
- cbz x1, G_M60851_IG15
+ cbz x1, G_M60851_IG14
;; size=28 bbWeight=1 PerfScore 9.50
-G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
add x0, x1, #56
; byrRegs +[x0]
ldapr w0, [x0]
; byrRegs -[x0]
cmp w0, #1
- beq G_M60851_IG14
+ beq G_M60851_IG13
add x1, x1, #64
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x0, [x1]
; gcrRegs +[x0]
- cbnz x0, G_M60851_IG13
+ cbnz x0, G_M60851_IG12
;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M60851_IG11: ; bbWeight=0.33, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M60851_IG10: ; bbWeight=0.33, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0]
; byrRegs -[x1]
mov w1, wzr
;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M60851_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M60851_IG16
+G_M60851_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+ b G_M60851_IG15
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M60851_IG13: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80002 {x1 x19}, byref
+G_M60851_IG12: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80002 {x1 x19}, byref
; byrRegs +[x1]
ldr x1, [x1]
; gcrRegs +[x1]
@@ -141,24 +130,24 @@ G_M60851_IG13: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80002 {
; byrRegs -[x1]
cmp w1, #0
cset x1, ne
- b G_M60851_IG12
+ b G_M60851_IG11
;; size=24 bbWeight=0.17 PerfScore 1.43
-G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
mov w1, #1
- b G_M60851_IG16
+ b G_M60851_IG15
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M60851_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
mov w1, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M60851_IG16: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M60851_IG15: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldapr w0, [x19]
and w0, w0, #0xD1FFAB1E
mov w2, #0xD1FFAB1E
cmp w1, #0
ccmp w0, w2, z, eq
- beq G_M60851_IG20
+ beq G_M60851_IG19
;; size=24 bbWeight=1 PerfScore 6.00
-G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x19]
ldr x1, [xpr, #0x58]
ldr x1, [x1, #0x10]
@@ -173,7 +162,7 @@ G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
add x21, x1, #16
; byrRegs +[x21]
;; size=40 bbWeight=0.50 PerfScore 10.50
-G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
; byrRegs -[x1]
add x1, x21, #104
; byrRegs +[x1]
@@ -185,24 +174,24 @@ G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M60851_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M60851_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M60851_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref, isz
; gcrRegs -[x0]
; byrRegs -[x1 x21] +[x19]
ldapr w0, [x19]
and w0, w0, #0xD1FFAB1E
cmp w0, #0xD1FFAB1E, LSL #12
- beq G_M60851_IG22
+ beq G_M60851_IG21
ldapr w0, [x19]
orr w0, w0, #0xD1FFAB1E
swpal w0, w0, [x19]
- tbnz w0, #22, G_M60851_IG22
+ tbnz w0, #22, G_M60851_IG21
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -210,14 +199,14 @@ G_M60851_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
;; size=52 bbWeight=0.50 PerfScore 8.75
-G_M60851_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG20: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x1
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M60851_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60851_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0 x20]
; byrRegs -[x19]
ldr x21, [sp, #0x28]
@@ -225,7 +214,7 @@ G_M60851_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M60851_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M60851_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
mov x1, x19
; gcrRegs +[x1]
@@ -239,18 +228,32 @@ G_M60851_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
; gcrRegs +[x2]
b G_M60851_IG04
;; size=28 bbWeight=0 PerfScore 0.00
+G_M60851_IG23: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[x1 x19] +[x0]
+ ; gcr arg pop 0
+ mov x20, x0
+ ; gcrRegs +[x20]
+ b G_M60851_IG08
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M60851_IG24: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x2 x19] +[x20]
...
libraries.crossgen2.windows.arm64.checked.mch
-36 (-34.62%) : 31150.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -8,39 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M7606_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -48,22 +35,14 @@ G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,9 +61,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-36 (-34.62%) : 31627.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)
@@ -8,39 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M16223_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M16223_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -48,22 +35,14 @@ G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M16223_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,9 +61,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-36 (-34.62%) : 202203.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -8,41 +8,28 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
;
; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
mov x19, x1
; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x20, x19
- ; gcrRegs +[x20]
- cbz x20, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- cmp x21, x0
- beq G_M8451_IG05
- ;; size=28 bbWeight=0.25 PerfScore 2.38
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
mov x1, x19
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -50,22 +37,14 @@ G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x2, [x2]
blr x2
; gcrRegs -[x1 x19] +[x0]
- mov x20, x0
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=0.12 PerfScore 0.75
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x20
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -84,9 +63,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+4 (+1.09%) : 234749.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
+4 (+1.09%) : 156531.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
+4 (+1.09%) : 177943.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
@@ -9,55 +9,46 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
-; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp"
-; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
+; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
+; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp"
+; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP
+; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x48]
+ str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08]
- add x2, sp, #80
- stp x0, x2, [fp, #0x30] // [V13 PSPSym]
- stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x38] // [V13 PSPSym]
+ stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x1]
- mov x19, x1
- ; gcrRegs +[x19]
- cbz x19, G_M25375_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1]
- ldr x20, [x19]
- ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
; gcr arg pop 0
- cmp x20, x0
- beq G_M25375_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address
add x2, x2, [LOW RELOC #0xD1FFAB1E]
@@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=24 bbWeight=0.25 PerfScore 1.88
-G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x0]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C]
add w11, w11, #1
str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M25375_IG06: ; bbWeight=1, nogc, extend
- ldp x2, x3, [x0, #0x10]
- stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50
+G_M25375_IG03: ; bbWeight=1, nogc, extend
+ ldp x1, x2, [x0, #0x10]
+ stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend
- ldr w20, [x0, #0x08]
- ldr w11, [fp, #0x28] // [V10 tmp8]
- cmp w20, w11
- bhs G_M25375_IG08
- add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend
+ ldr w21, [x0, #0x08]
+ ldr w11, [fp, #0x30] // [V09 tmp7]
+ cmp w21, w11
+ bhs G_M25375_IG05
+ add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
mov x1, x0
- add x0, fp, #32 // [V07 tmp5]
- mov w2, w20
+ add x0, fp, #40 // [V05 tmp3]
+ mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
@@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend
; gcr arg pop 0
mov x14, x0
; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09
- ;; size=100 bbWeight=1 PerfScore 29.50
-G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19]
- mov x1, x19
+ b G_M25375_IG06
+ ;; size=100 bbWeight=1 PerfScore 27.00
+G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0 x20]
+ mov x1, x20
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
sub w0, w11, #1
; gcrRegs -[x0]
;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x40]
- ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
- add x3, fp, #80
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
+ add x3, fp, #96
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0]
+ mov x0, x19
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs
blr x3
; gcrRegs -[x1-x2]
; gcr arg pop 0
- adr x0, [G_M25375_IG09]
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06]
+ ;; size=84 bbWeight=0 PerfScore 0.00
+G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
...
libraries.pmi.windows.arm64.checked.mch
-28 (-46.67%) : 27129.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M7606_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 226200.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-33.33%) : 255820.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
@@ -8,76 +8,48 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.25) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> [fp+0x18] class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.__Canon>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51997_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x20]
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M51997_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M51997_IG03: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x2]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x0, x3
- str x2, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- beq G_M51997_IG05
- ;; size=32 bbWeight=0.25 PerfScore 4.38
-G_M51997_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- ; GC ptr vars -{V04}
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- ;; size=12 bbWeight=0.12 PerfScore 0.31
-G_M51997_IG05: ; bbWeight=1, gcVars=0000000000000001 {V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- ldp x0, x2, [x19, #0x08]
- ; gcrRegs +[x0 x2]
- ldr x1, [fp, #0x18] // [V04 tmp2]
+ mov x1, x0
; gcrRegs +[x1]
+ ldp x0, x2, [x19, #0x08]
+ ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):ubyte:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
ldr wzr, [x0]
- ;; size=28 bbWeight=1 PerfScore 13.50
-G_M51997_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x28]
- ldp fp, lr, [sp], #0x30
+ ;; size=48 bbWeight=1 PerfScore 25.00
+G_M51997_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-G_M51997_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0-x1]
- ; GC ptr vars -{V04}
- str x2, [fp, #0x18] // [V04 tmp2]
- ; GC ptr vars +{V04}
- b G_M51997_IG05
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 20, PerfScore 28.69, instruction count 30, allocated bytes for code 120 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 20, PerfScore 33.00, instruction count 20, allocated bytes for code 80 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -88,7 +60,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,8 +68,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
E4 end
+8 (+1.67%) : 178831.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
@@ -8,27 +8,26 @@
; 2 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.ColumnTypeConverter>
-; V01 arg1 [V01,T11] ( 3, 2.50) ref -> x1 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
-; V02 arg2 [V02,T12] ( 3, 2.50) ref -> x2 class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T01] ( 8, 25.91) ref -> x19 class-hnd single-def <System.Object>
+; V00 this [V00,T09] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.ColumnTypeConverter>
+; V01 arg1 [V01,T10] ( 3, 2.50) ref -> x1 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V02 arg2 [V02,T11] ( 3, 2.50) ref -> x2 class-hnd single-def <System.Globalization.CultureInfo>
+; V03 arg3 [V03,T06] ( 7, 9.99) ref -> x19 class-hnd single-def <System.Object>
; V04 loc0 [V04,T04] ( 8, 21.50) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V06 tmp1 [V06,T12] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V07 tmp2 [V07,T00] ( 6, 63.81) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
-;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-;* V09 tmp4 [V09,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V10 tmp5 [V10,T07] ( 2, 8 ) byref -> x3 "impAppendStmt"
+; V08 tmp3 [V08,T03] ( 4, 21.88) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.String>
+; V09 tmp4 [V09,T07] ( 2, 8 ) byref -> x3 "impAppendStmt"
+;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T02] ( 3, 24 ) ref -> x0 "arr expr"
-; V17 tmp12 [V17,T03] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V18 tmp13 [V18,T13] ( 3, 3 ) ref -> x0 single-def "arr expr"
-;* V19 cse0 [V19,T09] ( 0, 0 ) long -> zero-ref multi-def "CSE - aggressive"
-; V20 cse1 [V20,T06] ( 7, 14 ) long -> x21 multi-def "CSE - aggressive"
+; V15 tmp10 [V15,T01] ( 3, 24 ) ref -> x0 "arr expr"
+; V16 tmp11 [V16,T02] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V17 tmp12 [V17,T13] ( 3, 3 ) ref -> x0 single-def "arr expr"
+;* V18 cse0 [V18,T08] ( 0, 0 ) long -> zero-ref multi-def "CSE - aggressive"
+; V19 cse1 [V19,T05] ( 7, 14 ) long -> x21 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -42,7 +41,7 @@ G_M21223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=1 PerfScore 4.00
G_M21223_IG02: ; bbWeight=1, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x2]
- cbz x19, G_M21223_IG15
+ cbz x19, G_M21223_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x3, [x19]
@@ -50,14 +49,14 @@ G_M21223_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
cmp x3, x4
- bne G_M21223_IG15
+ bne G_M21223_IG16
mov w20, wzr
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
- tbz w0, #0, G_M21223_IG18
+ tbz w0, #0, G_M21223_IG19
;; size=48 bbWeight=0.50 PerfScore 6.00
G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1-x2]
@@ -69,14 +68,14 @@ G_M21223_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, #0
- ble G_M21223_IG10
+ ble G_M21223_IG11
;; size=28 bbWeight=0.50 PerfScore 4.50
G_M21223_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x21]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M21223_IG17
+ bhs G_M21223_IG18
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -90,21 +89,27 @@ G_M21223_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
ldrsb wzr, [x0]
cmp x0, x19
- beq G_M21223_IG12
+ beq G_M21223_IG13
;; size=52 bbWeight=4 PerfScore 102.00
-G_M21223_IG06: ; bbWeight=15.91, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG06: ; bbWeight=1.99, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ cbz x1, G_M21223_IG09
+ ;; size=8 bbWeight=1.99 PerfScore 2.98
+G_M21223_IG07: ; bbWeight=15.91, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
- cmp w2, w1
- bne G_M21223_IG08
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
+ bne G_M21223_IG09
;; size=16 bbWeight=15.91 PerfScore 119.30
-G_M21223_IG07: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG08: ; bbWeight=2, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
add x3, x0, #12
; byrRegs +[x3]
ldr w2, [x0, #0x08]
lsl w2, w2, #1
mov w2, w2
- add x1, x19, #12
+ add x1, x1, #12
+ ; gcrRegs -[x1]
; byrRegs +[x1]
mov x0, x3
; gcrRegs -[x0]
@@ -117,17 +122,17 @@ G_M21223_IG07: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
blr x3
; byrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M21223_IG12
+ cbnz w0, G_M21223_IG13
;; size=48 bbWeight=2 PerfScore 25.00
-G_M21223_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add w20, w20, #1
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
- tbz w0, #0, G_M21223_IG19
+ tbz w0, #0, G_M21223_IG20
;; size=24 bbWeight=4 PerfScore 24.00
-G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -138,26 +143,26 @@ G_M21223_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp w0, w20
bgt G_M21223_IG05
;; size=28 bbWeight=4 PerfScore 36.00
-G_M21223_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21223_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
movz x0, #184
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M21223_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21223_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w2, [x0]
- tbz w2, #0, G_M21223_IG20
+ tbz w2, #0, G_M21223_IG21
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21223_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x21, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -165,7 +170,7 @@ G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w20, w1
- bhs G_M21223_IG17
+ bhs G_M21223_IG18
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -173,13 +178,13 @@ G_M21223_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x0]
; byrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 6.25
-G_M21223_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M21223_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1-x2 x19]
mov x3, x19
; gcrRegs +[x3]
@@ -188,19 +193,19 @@ G_M21223_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M21223_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x4
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M21223_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M21223_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x3 x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M21223_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21223_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -210,16 +215,16 @@ G_M21223_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
b G_M21223_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-G_M21223_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21223_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #54
bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
- b G_M21223_IG09
+ b G_M21223_IG10
;; size=24 bbWeight=0 PerfScore 0.00
-G_M21223_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21223_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -227,10 +232,10 @@ G_M21223_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w1, #54
bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
- b G_M21223_IG13
+ b G_M21223_IG14
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 480, prolog size 20, PerfScore 341.55, instruction count 120, allocated bytes for code 480 (MethodHash=3d9fad18) for method System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
...
+4 (+2.63%) : 265743.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> x1 class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.92) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.33) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.17) byref -> x0 single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.92) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.33) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.17) byref -> x0 single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -51,12 +50,13 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ cbz x1, G_M57556_IG04
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
ldr x1, [x1, #0x08]
cmp x2, x1
beq G_M57556_IG13
- ;; size=16 bbWeight=0.50 PerfScore 3.75
+ ;; size=20 bbWeight=0.50 PerfScore 4.25
G_M57556_IG07: ; bbWeight=0.44, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbz x2, G_M57556_IG12
@@ -100,7 +100,7 @@ G_M57556_IG13: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
b G_M57556_IG11
;; size=8 bbWeight=0.06 PerfScore 0.10
-; Total bytes of code 152, prolog size 8, PerfScore 19.18, instruction count 38, allocated bytes for code 152 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 19.68, instruction count 39, allocated bytes for code 156 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +111,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+2.63%) : 185376.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> x0 this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> x1 class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> x1 class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.92) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.33) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.17) byref -> x0 single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.92) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.33) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.17) byref -> x0 single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -51,12 +50,13 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ cbz x1, G_M57556_IG04
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
ldr x1, [x1, #0x08]
cmp x2, x1
beq G_M57556_IG13
- ;; size=16 bbWeight=0.50 PerfScore 3.75
+ ;; size=20 bbWeight=0.50 PerfScore 4.25
G_M57556_IG07: ; bbWeight=0.44, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbz x2, G_M57556_IG12
@@ -100,7 +100,7 @@ G_M57556_IG13: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
b G_M57556_IG11
;; size=8 bbWeight=0.06 PerfScore 0.10
-; Total bytes of code 152, prolog size 8, PerfScore 19.18, instruction count 38, allocated bytes for code 152 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 19.68, instruction count 39, allocated bytes for code 156 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +111,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.windows.arm64.Release.mch
-28 (-46.67%) : 549152.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)
@@ -8,12 +8,10 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 84576
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.50 PerfScore 5.25
-G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-35.29%) : 54612.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)
@@ -7,12 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x2 this single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x2 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,38 +17,25 @@ G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str x1, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ; byrRegs +[x0]
- ldr x2, [x0]
- ; gcrRegs +[x2]
- mov x0, x2
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- cbz x0, G_M64707_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- ldr x1, [x1, #0x08]
- cmp x3, x1
- beq G_M64707_IG05
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- mov x1, x2
+ mov x2, x0
+ ; byrRegs +[x2]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
+ ldr x0, [x1, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x08]
+ ldr x1, [x2]
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M64707_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1] +[x0]
+ ; byrRegs -[x2]
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 12, PerfScore 12.62, instruction count 17, allocated bytes for code 68 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 44, prolog size 12, PerfScore 18.00, instruction count 11, allocated bytes for code 44 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -62,7 +46,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-48 (-30.77%) : 499538.dasm - Moq.Mock`1[System.Canon]:get_Object():System.Canon:this (Tier1)
@@ -8,13 +8,11 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 3.87) ref -> x19 this class-hnd single-def <Moq.Mock`1[System.__Canon]>
+; V00 this [V00,T00] ( 5, 3.50) ref -> x0 this class-hnd single-def <Moq.Mock`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,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V05 tmp4 [V05,T02] ( 4, 1.62) ref -> x1 "guarded devirt return temp"
-;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]>
+; V02 tmp1 [V02,T02] ( 3, 1.50) ref -> x1 "guarded devirt return temp"
+;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]>
+; V04 cse0 [V04,T01] ( 4, 3.12) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -22,21 +20,17 @@ G_M6043_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M6043_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M6043_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ ldr x19, [x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
+ cmp x19, x1
bne G_M6043_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M6043_IG03: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
+G_M6043_IG03: ; bbWeight=0.39, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for Moq.Mock`1[System.__Canon]:OnGetObject():System.Object:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -45,46 +39,30 @@ G_M6043_IG03: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov x1, x0
; gcrRegs +[x1]
b G_M6043_IG05
- ;; size=32 bbWeight=0.39 PerfScore 2.89
-G_M6043_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x58]
+ ;; size=28 bbWeight=0.39 PerfScore 2.69
+G_M6043_IG04: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
+ ldr x1, [x19, #0x58]
ldr x1, [x1]
blr x1
mov x1, x0
; gcrRegs +[x1]
- ;; size=24 bbWeight=0.12 PerfScore 1.27
-G_M6043_IG05: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.12 PerfScore 0.86
+G_M6043_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M6043_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6043_IG06: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M6043_IG08
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M6043_IG07: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M6043_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00
+G_M6043_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 156, prolog size 16, PerfScore 23.97, instruction count 39, allocated bytes for code 156 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
+; Total bytes of code 108, prolog size 12, PerfScore 26.06, instruction count 27, allocated bytes for code 108 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -95,7 +73,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+8.33%) : 147479.dasm - System.Collections.Immutable.ImmutableDictionary2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
@@ -8,76 +8,75 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 64
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 6, 3.50) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
-; V02 arg1 [V02,T01] ( 5, 4 ) byref -> x19 single-def
-; V03 loc0 [V03,T04] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
+; V00 TypeCtx [V00,T00] ( 6, 4 ) long -> x19 single-def
+; V01 arg0 [V01,T02] ( 4, 3 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]>
+; V02 arg1 [V02,T01] ( 5, 4 ) byref -> x20 single-def
+; V03 loc0 [V03,T03] ( 3, 0 ) ref -> x0 class-hnd exact single-def <System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 6, 9 ) ref -> x15 class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
-;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 0 ) long -> x0 "argument with side effect"
-; V08 rat0 [V08,T05] ( 3, 0 ) long -> x0 "runtime lookup"
-; V09 rat1 [V09,T06] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp2 [V06,T06] ( 2, 0 ) long -> x0 "argument with side effect"
+; V07 rat0 [V07,T04] ( 3, 0 ) long -> x0 "runtime lookup"
+; V08 rat1 [V08,T05] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M59789_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x0, [fp, #0x18]
- mov x20, x1
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M59789_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x15, x20
+ str x0, [fp, #0x10]
+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M59789_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x0, x19
+ mov x1, x21
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ mov x15, x0
; gcrRegs +[x15]
- cbz x15, G_M59789_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M59789_IG03: ; bbWeight=0.50, gcrefRegs=108000 {x15 x20}, byrefRegs=80000 {x19}, byref
- ldr x14, [x15]
- cmp x14, x0
- csel x15, x15, xzr, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M59789_IG04: ; bbWeight=1, gcrefRegs=108000 {x15 x20}, byrefRegs=80000 {x19}, byref, isz
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x1, [x19]
- ; gcrRegs +[x1]
- cbz x1, G_M59789_IG06
+ ldr x0, [x20]
+ ; gcrRegs +[x0]
+ cbz x0, G_M59789_IG04
mov w0, #1
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M59789_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ; gcrRegs -[x0]
+ ;; size=36 bbWeight=1 PerfScore 8.50
+G_M59789_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M59789_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x1, [x0, #0x38]
- ldr x1, [x1]
- ldr x2, [x1, #0x50]
- cbz x2, G_M59789_IG07
- mov x0, x2
- b G_M59789_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M59789_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M59789_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, gcvars, byref, isz
+ ldr x0, [x19, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x50]
+ cbz x0, G_M59789_IG05
+ b G_M59789_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M59789_IG05: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+ mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M59789_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x1, x20
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M59789_IG06: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x1, x21
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1 x20] +[x0]
- cbz x0, G_M59789_IG10
+ ; gcrRegs -[x1 x21] +[x0]
+ cbz x0, G_M59789_IG08
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,int]:ToImmutable():System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -85,28 +84,30 @@ G_M59789_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
blr x1
mov x15, x0
; gcrRegs +[x15]
- mov x14, x19
+ mov x14, x20
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x19]
+ ; byrRegs -[x14 x20]
mov w0, #1
;; size=48 bbWeight=0 PerfScore 0.00
-G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+G_M59789_IG07: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M59789_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M59789_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M59789_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+G_M59789_IG09: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 17.00, instruction count 48, allocated bytes for code 192 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
+; Total bytes of code 208, prolog size 20, PerfScore 19.50, instruction count 52, allocated bytes for code 208 (MethodHash=98ac1672) for method System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -117,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -131,10 +132,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+9.09%) : 151525.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
@@ -9,9 +9,9 @@
; 4 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 2.03) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
+; V00 this [V00,T04] ( 4, 2.81) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
; V01 arg1 [V01,T00] ( 8, 5.69) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task>
-; V02 arg2 [V02,T01] ( 4, 3.81) ubyte -> [fp+0x24] EH-live single-def
+; V02 arg2 [V02,T01] ( 5, 3.81) ubyte -> [fp+0x24] EH-live single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 tmp2 [V05,T07] ( 4, 3.25) ubyte -> x1 "Inline return value spill temp"
@@ -21,15 +21,14 @@
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref
-;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V15 tmp12 [V15,T10] ( 2, 3.25) byref -> x1 single-def "argument with side effect"
-; V16 PSPSym [V16,T12] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V17 cse0 [V17,T06] ( 4, 3.25) byref -> x20 "CSE - aggressive"
-; V18 rat0 [V18,T09] ( 3, 3.25) byref -> x22 "TLS field access"
-; V19 rat1 [V19,T02] ( 3, 4.88) long -> x1 "TLS access"
-; V20 rat2 [V20,T03] ( 3, 4.88) long -> x1 "ThreadStaticBlockBase access"
+;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V14 tmp11 [V14,T10] ( 2, 3.25) byref -> x1 single-def "argument with side effect"
+; V15 PSPSym [V15,T12] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V16 cse0 [V16,T06] ( 4, 3.25) byref -> x20 "CSE - aggressive"
+; V17 rat0 [V17,T09] ( 3, 3.25) byref -> x22 "TLS field access"
+; V18 rat1 [V18,T02] ( 3, 4.88) long -> x1 "TLS access"
+; V19 rat2 [V19,T03] ( 3, 4.88) long -> x1 "ThreadStaticBlockBase access"
;
; Lcl frame size = 32
@@ -39,7 +38,7 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x40]
mov fp, sp
add x3, sp, #80
- str x3, [fp, #0x28] // [V16 PSPSym]
+ str x3, [fp, #0x28] // [V15 PSPSym]
str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
str w2, [fp, #0x24] // [V02 arg2]
@@ -48,7 +47,7 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 7.50
G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
tst w2, #255
- bne G_M14922_IG15
+ bne G_M14922_IG14
;; size=8 bbWeight=1 PerfScore 1.50
G_M14922_IG03: ; bbWeight=0.81, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x20, x19, #52
@@ -157,24 +156,38 @@ G_M14922_IG10: ; bbWeight=0.81, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0 x19]
; gcr arg pop 0
;; size=24 bbWeight=0.81 PerfScore 4.88
-G_M14922_IG11: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x28] // [V16 PSPSym]
- bl G_M14922_IG18
- ;; size=8 bbWeight=0.81 PerfScore 2.44
-G_M14922_IG12: ; bbWeight=0.81, nogc, extend
- nop
- ;; size=4 bbWeight=0.81 PerfScore 0.41
-G_M14922_IG13: ; bbWeight=0.81, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14922_IG11: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w2, [fp, #0x24] // [V02 arg2]
+ tst w2, #255
+ beq G_M14922_IG12
+ ldr x0, [fp, #0x18] // [V00 this]
+ ; gcrRegs +[x0]
+ ldrsb wzr, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool:NotifyWorkItemProgress():this
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
; GC ptr vars -{V00}
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=56 bbWeight=0.81 PerfScore 15.03
+G_M14922_IG12: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0.81 PerfScore 0.41
-G_M14922_IG14: ; bbWeight=0.81, epilog, nogc, extend
+G_M14922_IG13: ; bbWeight=0.81, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=0.81 PerfScore 3.25
-G_M14922_IG15: ; bbWeight=0.22, gcVars=0000000000000010 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG14: ; bbWeight=0.22, gcVars=0000000000000010 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
; GC ptr vars +{V00}
cmp x19, #0
@@ -196,31 +209,29 @@ G_M14922_IG15: ; bbWeight=0.22, gcVars=0000000000000010 {V00}, gcrefRegs=
; gcr arg pop 0
cbnz w0, G_M14922_IG03
;; size=56 bbWeight=0.22 PerfScore 2.95
-G_M14922_IG16: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14922_IG15: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V00}
mov w0, wzr
;; size=4 bbWeight=0.19 PerfScore 0.09
-G_M14922_IG17: ; bbWeight=0.19, epilog, nogc, extend
+G_M14922_IG16: ; bbWeight=0.19, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=0.19 PerfScore 0.75
-G_M14922_IG18: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M14922_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
add x3, fp, #80
str x3, [sp, #0x18]
- ;; size=20 bbWeight=0.81 PerfScore 3.66
-G_M14922_IG19: ; bbWeight=0.81, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M14922_IG18: ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00}
ldrb w2, [fp, #0x24] // [V02 arg2]
tst w2, #255
- beq G_M14922_IG21
- ;; size=12 bbWeight=0.81 PerfScore 2.84
-G_M14922_IG20: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M14922_IG19
ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
ldrsb wzr, [x0]
@@ -238,15 +249,15 @@ G_M14922_IG20: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=0.03 PerfScore 0.47
-G_M14922_IG21: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M14922_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.81 PerfScore 8.12
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 484, prolog size 36, PerfScore 85.98, instruction count 121, allocated bytes for code 484 (MethodHash=bbabc5b5) for method System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
+; Total bytes of code 528, prolog size 36, PerfScore 83.08, instruction count 132, allocated bytes for code 528 (MethodHash=bbabc5b5) for method System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -257,7 +268,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 392 (0x000188)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -296,6 +307,5 @@ Unwind Info:
E4 end
*************** EH table for System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this
-1 EH table entries, 0 duplicate clauses, 1 cloned finallys, 2 total EH entries reported to VM
-EH#0: try [G_M14922_IG03..G_M14922_IG11) handled by [G_M14922_IG18..END) (finally)
-EH#1: try [G_M14922_IG11..G_M14922_IG11) handled by [G_M14922_IG11..G_M14922_IG13) (finally) cloned finally
+1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
+EH#0: try [G_M14922_IG03..G_M14922_IG11) handled by [G_M14922_IG17..END) (fault)
+16 (+10.00%) : 406235.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
@@ -11,13 +11,11 @@
;
; V00 this [V00,T02] ( 4, 3 ) ref -> x0 this class-hnd <OLEDB.Test.ModuleCore.CTestCase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T06] ( 3, 2.50) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <OLEDB.Test.ModuleCore.CTestModule>
-; V05 tmp4 [V05,T07] ( 2, 0 ) ref -> x0 single-def "arg temp"
-; V06 cse0 [V06,T05] ( 4, 3 ) ref -> x19 "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 3, 4 ) ref -> x1 "Spilling to split statement for tree"
-; V08 rat1 [V08,T01] ( 6, 7 ) ref -> x2 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V02 tmp1 [V02,T05] ( 2, 0 ) ref -> x0 single-def "arg temp"
+; V03 cse0 [V03,T04] ( 5, 3 ) ref -> x19 "CSE - aggressive"
+; V04 rat0 [V04,T03] ( 3, 4 ) ref -> x1 "Spilling to split statement for tree"
+; V05 rat1 [V05,T00] ( 5, 7 ) ref -> x2 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V06 rat2 [V06,T01] ( 5, 7 ) ref -> x0 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
;
; Lcl frame size = 8
@@ -38,38 +36,42 @@ G_M5100_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
;; size=16 bbWeight=1 PerfScore 5.00
G_M5100_IG03: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- cbz x2, G_M5100_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M5100_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- mov x1, x19
- ; gcrRegs +[x1]
- mov x0, x1
+ cbz x2, G_M5100_IG07
+ mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M5100_IG07
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M5100_IG05: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
- beq G_M5100_IG07
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M5100_IG06: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M5100_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ cbnz x0, G_M5100_IG05
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M5100_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x2 x19]
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M5100_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5100_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
+ ldr x1, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ beq G_M5100_IG04
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M5100_IG06: ; bbWeight=0.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M5100_IG10
+ ;; size=4 bbWeight=0.07 PerfScore 0.07
+G_M5100_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[x1 x19] +[x0]
+ ; gcr arg pop 0
+ b G_M5100_IG02
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M5100_IG08: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x1-x2 x19]
ldr x0, [x2]
movz x3, #0xD1FFAB1E
@@ -78,7 +80,7 @@ G_M5100_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000
cmp x0, x3
beq G_M5100_IG03
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M5100_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M5100_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -88,7 +90,7 @@ G_M5100_IG09: ; bbWeight=0, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- cbnz x2, G_M5100_IG04
+ b G_M5100_IG03
;; size=24 bbWeight=0 PerfScore 0.00
G_M5100_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2]
@@ -100,10 +102,10 @@ G_M5100_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
- b G_M5100_IG02
+ b G_M5100_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 20.88, instruction count 40, allocated bytes for code 160 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 20.07, instruction count 44, allocated bytes for code 176 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
Unwind Info:
@@ -114,7 +116,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-28 (-46.67%) : 36762.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -20,37 +18,19 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M24927_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M24927_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M24927_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +41,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-46.67%) : 146523.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x0 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1
- ; gcrRegs +[x2]
- cbz x2, G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
ldr x0, [x0, #0x38]
ldr x0, [x0]
- cmp x3, x0
- beq G_M8451_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-40.00%) : 30737.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)
@@ -8,11 +8,9 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
-; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 16
@@ -21,33 +19,21 @@ G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x1, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2
- ; gcrRegs +[x0]
- cbz x0, G_M29555_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x0]
- ldr x1, [x1, #0x38]
- ldr x1, [x1]
- cmp x3, x1
- beq G_M29555_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
+ ldr x0, [x1, #0x38]
+ ldr x0, [x0]
mov x1, x2
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -58,7 +44,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+43.48%) : 93885.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)
@@ -8,26 +8,25 @@
; 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 -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
-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
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08]
; gcrRegs +[x0-x1]
ldrsb wzr, [x0]
@@ -38,11 +37,9 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)
@@ -50,26 +47,41 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
- brk_windows #0
- ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ;; size=104 bbWeight=1 PerfScore 32.50
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x2
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (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 : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
+40 (+43.48%) : 94916.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)
@@ -8,26 +8,25 @@
; 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 -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 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 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
-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
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08]
; gcrRegs +[x0-x1]
ldrsb wzr, [x0]
@@ -38,11 +37,9 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)
@@ -50,26 +47,41 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
- brk_windows #0
- ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ movz x2, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ;; size=104 bbWeight=1 PerfScore 32.50
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x2
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (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 : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
+48 (+92.31%) : 95293.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,24 +8,24 @@
; 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 -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 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 -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V06 cse0 [V06,T02] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V04 cse0 [V04,T02] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
- ldrsb wzr, [x0]
+ ldr x19, [x0, #0x08]
+ ; gcrRegs +[x19]
+ ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -35,26 +35,46 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- brk_windows #0
- ;; size=44 bbWeight=0 PerfScore 0.00
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ mov x0, x19
+ ; gcrRegs +[x0]
+ mov w1, wzr
+ movz x3, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ ;; size=76 bbWeight=1 PerfScore 20.00
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ br x3
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 52, prolog size 8, PerfScore 0.00, instruction count 13, allocated bytes for code 52 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 26.50, instruction count 25, allocated bytes for code 100 (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
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ ---- Epilog start at index 1 ----
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
realworld.run.windows.arm64.checked.mch
-24 (-31.58%) : 31473.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,34 +21,22 @@ G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M56342_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19]
- ldr x3, [x3, #0x38]
- ldr x3, [x3]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M56342_IG05
- ;; size=28 bbWeight=0.25 PerfScore 4.12
-G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M56342_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (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 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (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:
@@ -61,7 +47,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-28.00%) : 684.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 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 -> x1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x19, [sp, #0x18]
mov fp, sp
str x0, [fp, #0x10]
- mov x19, x0
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x38]
+ ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M13946_IG05
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M13946_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-25.93%) : 18088.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x20]
mov fp, sp
str x1, [fp, #0x18]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x20, [x1, #0x38]
+ ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- mov x0, x20
- ldr x2, [x20]
+ mov x0, x19
+ ldr x2, [x19]
ldr x2, [x2, #0x70]
ldr x2, [x2, #0x10]
blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M60617_IG05
- ;; size=44 bbWeight=1 PerfScore 19.50
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0]
- ldr x3, [x19, #0x38]
- ldr x3, [x3]
- cmp x2, x3
- beq G_M60617_IG05
- ;; size=20 bbWeight=0.25 PerfScore 2.62
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.40%) : 14506.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
@@ -12,53 +12,47 @@
; V01 arg1 [V01,T07] ( 11, 7.50) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T02] ( 19, 19 ) long -> [fp+0x18] do-not-enreg[Z] EH-live
; V03 loc1 [V03,T15] ( 5, 4 ) long -> x20
-; V04 loc2 [V04,T24] ( 2, 2 ) long -> x0
-; V05 loc3 [V05,T28] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T22] ( 2, 2 ) long -> x0
+; V05 loc3 [V05,T26] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T03] ( 5, 16.50) int -> x2
-; V07 loc5 [V07,T25] ( 2, 2 ) long -> x0
+; V07 loc5 [V07,T23] ( 2, 2 ) long -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T16] ( 2, 4 ) byref -> x21 single-def "impAppendStmt"
; V10 tmp2 [V10,T13] ( 3, 6 ) byref -> x0 single-def "dup spill"
-; V11 tmp3 [V11,T22] ( 2, 2 ) byref -> x22 single-def "impAppendStmt"
-; V12 tmp4 [V12,T19] ( 3, 3 ) byref -> x21 single-def "dup spill"
-;* V13 tmp5 [V13,T31] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V14 tmp6 [V14,T23] ( 2, 2 ) ref -> x19 class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp7 [V15,T04] ( 2, 16 ) byref -> x24 "impAppendStmt"
-; V16 tmp8 [V16,T01] ( 3, 24 ) byref -> x0 "dup spill"
-;* V17 tmp9 [V17,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V18 tmp10 [V18,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V21 tmp13 [V21,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp"
-;* V22 tmp14 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V23 tmp15 [V23,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object>
-;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V25 tmp17 [V25 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V26 tmp18 [V26,T34] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V27 tmp19 [V27,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V28 tmp20 [V28,T09] ( 2, 8 ) byref -> x0 "Inlining Arg"
-; V29 tmp21 [V29,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp"
-;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
-;* V31 tmp23 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V32 tmp24 [V32,T35] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V33 tmp25 [V33,T21] ( 4, 2 ) long -> x0 "Inline stloc first use temp"
-;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V36 tmp28 [V36,T26] ( 2, 2 ) long -> x0 "field V19._handle (fldOffset=0x0)" P-INDEP
-; V37 tmp29 [V37,T10] ( 2, 8 ) long -> x0 "field V24._handle (fldOffset=0x0)" P-INDEP
-; V38 tmp30 [V38,T29] ( 2, 1 ) long -> x0 "field V30._handle (fldOffset=0x0)" P-INDEP
-; V39 tmp31 [V39,T36] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
-; V40 tmp32 [V40,T37] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V41 tmp33 [V41,T38] ( 2, 0 ) ref -> x20 "argument with side effect"
-; V42 tmp34 [V42,T39] ( 2, 0 ) ref -> x2 "argument with side effect"
-; V43 PSPSym [V43,T33] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-;* V44 cse0 [V44 ] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V45 cse1 [V45,T20] ( 3, 2.50) ref -> x0 "CSE - moderate"
-; V46 cse2 [V46,T12] ( 5, 6 ) int -> x22 multi-def "CSE - aggressive"
-; V47 cse3 [V47,T11] ( 4, 6.50) long -> x21 "CSE - aggressive"
-; V48 cse4 [V48,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate"
-; V49 cse5 [V49,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
-; V50 cse6 [V50,T18] ( 4, 2 ) long -> registers multi-def "CSE - moderate"
+; V11 tmp3 [V11,T21] ( 2, 2 ) byref -> x22 single-def "impAppendStmt"
+; V12 tmp4 [V12,T18] ( 3, 3 ) byref -> x21 single-def "dup spill"
+; V13 tmp5 [V13,T04] ( 2, 16 ) byref -> x24 "impAppendStmt"
+; V14 tmp6 [V14,T01] ( 3, 24 ) byref -> x0 "dup spill"
+;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V17 tmp9 [V17,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp"
+;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V19 tmp11 [V19,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object>
+;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V21 tmp13 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V22 tmp14 [V22,T29] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
+;* V23 tmp15 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 tmp16 [V24,T09] ( 2, 8 ) byref -> x0 "Inlining Arg"
+; V25 tmp17 [V25,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp"
+;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle>
+;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V28 tmp20 [V28,T30] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V29 tmp21 [V29,T20] ( 4, 2 ) long -> x0 "Inline stloc first use temp"
+;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
+; V32 tmp24 [V32,T24] ( 2, 2 ) long -> x0 "field V15._handle (fldOffset=0x0)" P-INDEP
+; V33 tmp25 [V33,T10] ( 2, 8 ) long -> x0 "field V20._handle (fldOffset=0x0)" P-INDEP
+; V34 tmp26 [V34,T27] ( 2, 1 ) long -> x0 "field V26._handle (fldOffset=0x0)" P-INDEP
+; V35 tmp27 [V35,T31] ( 2, 0 ) ref -> x20 single-def "argument with side effect"
+; V36 tmp28 [V36,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V37 tmp29 [V37,T33] ( 2, 0 ) ref -> x20 "argument with side effect"
+; V38 tmp30 [V38,T34] ( 2, 0 ) ref -> x2 "argument with side effect"
+; V39 PSPSym [V39,T28] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V40 cse0 [V40,T12] ( 5, 6 ) int -> registers multi-def "CSE - aggressive"
+; V41 cse1 [V41,T19] ( 3, 2.50) ref -> x0 "CSE - moderate"
+; V42 cse2 [V42,T11] ( 4, 6.50) long -> x21 "CSE - aggressive"
+; V43 cse3 [V43,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate"
+; V44 cse4 [V44,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -70,7 +64,7 @@ G_M14417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x25, [sp, #0x58]
mov fp, sp
add x2, sp, #96
- str x2, [fp, #0x20] // [V43 PSPSym]
+ str x2, [fp, #0x20] // [V39 PSPSym]
str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
mov x19, x1
@@ -85,13 +79,13 @@ G_M14417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
;; size=8 bbWeight=1 PerfScore 1.50
G_M14417_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
bne G_M14417_IG05
- ldr w22, [x19, #0x08]
- mov w1, w22
+ ldr w21, [x19, #0x08]
+ mov w1, w21
add x20, x1, #1
b G_M14417_IG06
;; size=40 bbWeight=0.50 PerfScore 5.50
@@ -167,13 +161,14 @@ G_M14417_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x0, x1
bne G_M14417_IG22
mov w2, wzr
- ldr w22, [x19, #0x08]
+ ldr w0, [x19, #0x08]
+ sxtw w22, w0
cmp w22, #0
ble G_M14417_IG15
add x19, x19, #16
; gcrRegs -[x19]
; byrRegs +[x19]
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M14417_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [fp, #0x18] // [V02 loc0]
add w23, w2, #1
@@ -448,7 +443,7 @@ G_M14417_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 992, prolog size 40, PerfScore 236.00, instruction count 248, allocated bytes for code 992 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
+; Total bytes of code 996, prolog size 40, PerfScore 236.25, instruction count 249, allocated bytes for code 996 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
; ============================================================
Unwind Info:
@@ -459,7 +454,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 225 (0x000e1) Actual length = 900 (0x000384)
+ Function Length : 226 (0x000e2) Actual length = 904 (0x000388)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+4.35%) : 4655.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo>
@@ -16,27 +16,27 @@
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall"
-;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall"
-;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect"
-; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect"
-; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive"
-; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
-; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
-; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
-; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
-; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect"
+; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect"
+; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect"
+; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect"
+; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect"
+; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive"
+; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
+; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup"
+; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup"
+; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup"
+; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup"
+; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup"
+; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38]
; gcrRegs -[x0]
ldr x0, [x0]
@@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG13
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 3.00
-G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08]
+ ;; size=28 bbWeight=1 PerfScore 9.00
+G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16
- b G_M31693_IG17
+ cbz x0, G_M31693_IG14
+ b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
brk_windows #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x0, [x0]
ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20
- b G_M31693_IG21
+ cbz x0, G_M31693_IG17
+ b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
@@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -206,7 +200,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+8.59%) : 4833.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
@@ -8,29 +8,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
-; V01 arg1 [V01,T00] ( 8, 8 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task>
-; V02 arg2 [V02,T02] ( 4, 4 ) ubyte -> [fp+0x1C] EH-live single-def
+; V00 this [V00,T02] ( 4, 2.50) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
+; V01 arg1 [V01,T00] ( 8, 5 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task>
+; V02 arg2 [V02,T01] ( 5, 3.50) ubyte -> [fp+0x1C] EH-live single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp2 [V05,T07] ( 4, 4 ) ubyte -> x1 "Inline return value spill temp"
-; V06 tmp3 [V06,T06] ( 4, 4 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V07 tmp4 [V07,T12] ( 3, 3 ) ubyte -> x1 "Inline return value spill temp"
-; V08 tmp5 [V08,T09] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V05 tmp2 [V05,T07] ( 4, 2 ) ubyte -> x1 "Inline return value spill temp"
+; V06 tmp3 [V06,T06] ( 4, 2 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V07 tmp4 [V07,T12] ( 3, 1.50) ubyte -> x1 "Inline return value spill temp"
+; V08 tmp5 [V08,T09] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V10 tmp7 [V10,T13] ( 2, 2 ) int -> x1 "Inline stloc first use temp"
+; V10 tmp7 [V10,T13] ( 2, 1 ) int -> x1 "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V16 tmp13 [V16,T10] ( 2, 4 ) byref -> x1 single-def "argument with side effect"
-; V17 PSPSym [V17,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V18 cse0 [V18,T01] ( 7, 7 ) byref -> x20 "CSE - aggressive"
-; V19 cse1 [V19,T11] ( 3, 3 ) ref -> x1 "CSE - aggressive"
-; V20 rat0 [V20,T08] ( 3, 4 ) byref -> x21 "TLS field access"
-; V21 rat1 [V21,T03] ( 3, 6 ) long -> x1 "TLS access"
-; V22 rat2 [V22,T04] ( 3, 6 ) long -> x1 "ThreadStaticBlockBase access"
+;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V15 tmp12 [V15,T10] ( 2, 2 ) byref -> x1 single-def "argument with side effect"
+; V16 PSPSym [V16,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V17 cse0 [V17,T03] ( 7, 3.50) byref -> x20 "CSE - aggressive"
+; V18 cse1 [V18,T11] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V19 rat0 [V19,T08] ( 3, 2 ) byref -> x21 "TLS field access"
+; V20 rat1 [V20,T04] ( 3, 3 ) long -> x1 "TLS access"
+; V21 rat2 [V21,T05] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
;
; Lcl frame size = 24
@@ -40,16 +39,18 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x21, [sp, #0x38]
mov fp, sp
add x3, sp, #64
- str x3, [fp, #0x20] // [V17 PSPSym]
+ str x3, [fp, #0x20] // [V16 PSPSym]
str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
str w2, [fp, #0x1C] // [V02 arg2]
mov x19, x1
; gcrRegs +[x19]
;; size=36 bbWeight=1 PerfScore 7.50
-G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
tst w2, #255
- beq G_M14922_IG04
+ beq G_M14922_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M14922_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp x19, #0
cset x0, ne
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -67,16 +68,16 @@ G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M14922_IG04
+ cbnz w0, G_M14922_IG05
mov w0, wzr
- ;; size=68 bbWeight=1 PerfScore 15.50
-G_M14922_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=0.50 PerfScore 7.00
+G_M14922_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M14922_IG05: ; bbWeight=0.50, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
add x20, x19, #52
; byrRegs +[x20]
ldapr w1, [x20]
@@ -87,20 +88,20 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
ldapr x1, [x1]
; gcrRegs +[x1]
; byrRegs -[x1]
- cbz x1, G_M14922_IG08
+ cbz x1, G_M14922_IG09
add x3, x1, #56
; byrRegs +[x3]
ldapr w3, [x3]
; byrRegs -[x3]
cmp w3, #1
- beq G_M14922_IG07
+ beq G_M14922_IG08
add x1, x1, #64
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x1, [x1]
; gcrRegs +[x1]
; byrRegs -[x1]
- cbz x1, G_M14922_IG05
+ cbz x1, G_M14922_IG06
add x1, x1, #32
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -108,42 +109,42 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800
; byrRegs -[x1]
cmp w1, #0
cset x1, ne
- b G_M14922_IG06
- ;; size=76 bbWeight=1 PerfScore 24.50
-G_M14922_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG07
+ ;; size=76 bbWeight=0.50 PerfScore 12.25
+G_M14922_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M14922_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- b G_M14922_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M14922_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M14922_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG10
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M14922_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, #1
- b G_M14922_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M14922_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG10
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M14922_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M14922_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M14922_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w3, [x20]
and w3, w3, #0xD1FFAB1E
mov w4, #0xD1FFAB1E
cmp w1, #0
ccmp w3, w4, z, eq
- beq G_M14922_IG12
+ beq G_M14922_IG13
ldr x1, [xpr, #0x58]
ldr x1, [x1, #0x10]
ldr w3, [x1, #0xD0]
cmp w3, #11
- blt G_M14922_IG11
+ blt G_M14922_IG12
ldr x1, [x1, #0xD8]
ldr x1, [x1, #0x58]
- cbz x1, G_M14922_IG11
+ cbz x1, G_M14922_IG12
ldr x1, [x1]
; byrRegs +[x1]
add x21, x1, #16
; byrRegs +[x21]
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ ;; size=64 bbWeight=0.50 PerfScore 13.50
+G_M14922_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs -[x1 x20]
add x1, x21, #104
; byrRegs +[x1]
@@ -158,9 +159,9 @@ G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21
; gcrRegs -[x0 x19]
; byrRegs -[x1 x21]
; gcr arg pop 0
- b G_M14922_IG13
- ;; size=36 bbWeight=1 PerfScore 8.00
-G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M14922_IG14
+ ;; size=36 bbWeight=0.50 PerfScore 4.00
+G_M14922_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19]
mov w0, #11
bl CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
@@ -168,18 +169,18 @@ G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
mov x21, x0
; byrRegs +[x21]
- b G_M14922_IG10
+ b G_M14922_IG11
;; size=16 bbWeight=0 PerfScore 0.00
-G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M14922_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x0 x21] +[x20]
ldapr w1, [x20]
and w1, w1, #0xD1FFAB1E
cmp w1, #0xD1FFAB1E, LSL #12
- beq G_M14922_IG13
+ beq G_M14922_IG14
ldapr w1, [x20]
orr w1, w1, #0xD1FFAB1E
swpal w1, w1, [x20]
- tbnz w1, #22, G_M14922_IG13
+ tbnz w1, #22, G_M14922_IG14
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -190,33 +191,47 @@ G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
; gcrRegs -[x0 x19]
; byrRegs -[x20]
; gcr arg pop 0
- ;; size=56 bbWeight=1 PerfScore 18.50
-G_M14922_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V17 PSPSym]
- bl G_M14922_IG17
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M14922_IG14: ; bbWeight=1, nogc, extend
- nop
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M14922_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=0.50 PerfScore 9.25
+G_M14922_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w2, [fp, #0x1C] // [V02 arg2]
+ tst w2, #255
+ beq G_M14922_IG15
+ ldr x0, [fp, #0x10] // [V00 this]
+ ; gcrRegs +[x0]
+ ldrsb wzr, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool:NotifyWorkItemProgress():this
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
; GC ptr vars -{V00}
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=56 bbWeight=0.50 PerfScore 9.25
+G_M14922_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
...
smoke_tests.nativeaot.windows.arm64.checked.mch
-24 (-30.00%) : 7210.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:b_11(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
@@ -10,12 +10,9 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V02 arg2 [V02,T01] ( 4, 4 ) ref -> x2 class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T00] ( 4, 4 ) ref -> x2 class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V06 tmp2 [V06,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;
; Lcl frame size = 0
@@ -25,43 +22,28 @@ G_M14484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M14484_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w0, #0
- bls G_M14484_IG07
+ ldr w1, [x2, #0x08]
+ cmp w1, #0
+ bls G_M14484_IG04
ldr x1, [x2, #0x10]
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M14484_IG05
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M14484_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- ldr x2, [x0]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
- add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x2, x3
- beq G_M14484_IG05
- ;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M14484_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M14484_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2] +[x0]
bl <unknown method>
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M14484_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 10.50
+G_M14484_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M14484_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14484_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.06, instruction count 20, allocated bytes for code 80 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-30.00%) : 13068.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:b_11(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
@@ -9,12 +9,9 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V02 arg2 [V02,T01] ( 4, 4 ) ref -> x2 class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T00] ( 4, 4 ) ref -> x2 class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V06 tmp2 [V06,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;
; Lcl frame size = 0
@@ -24,43 +21,28 @@ G_M14484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M14484_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w0, #0
- bls G_M14484_IG07
+ ldr w1, [x2, #0x08]
+ cmp w1, #0
+ bls G_M14484_IG04
ldr x1, [x2, #0x10]
; gcrRegs +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- cbz x0, G_M14484_IG05
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M14484_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- ldr x2, [x0]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
- add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x2, x3
- beq G_M14484_IG05
- ;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M14484_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x3
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M14484_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x2] +[x0]
bl <unknown method>
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M14484_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 10.50
+G_M14484_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M14484_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14484_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.06, instruction count 20, allocated bytes for code 80 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-28.57%) : 8868.dasm - System.Runtime.CompilerServices.StrongBox`1[System._Canon]:System.Runtime.CompilerServices.IStrongBox.setValue(System.Object):this (FullOpts)
@@ -7,11 +7,9 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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) long -> x2 "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x15 class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 8
@@ -23,43 +21,28 @@ G_M28067_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
-G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x15, x1
- ; gcrRegs +[x15]
- cbz x15, G_M28067_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28067_IG03: ; bbWeight=0.25, gcrefRegs=88002 {x1 x15 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x15]
- ldr x2, [x19]
- ldr x2, [x2, #0x30]
- ldr x2, [x2]
- cmp x0, x2
- beq G_M28067_IG05
- ;; size=24 bbWeight=0.25 PerfScore 3.38
-G_M28067_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov x0, x2
+ ldr x0, [x19]
+ ldr x0, [x0, #0x30]
+ ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
- mov x15, x0
- ; gcrRegs +[x15]
- ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M28067_IG05: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
add x14, x19, #8
; byrRegs +[x14]
+ mov x15, x0
+ ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28067_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=28 bbWeight=1 PerfScore 12.00
+G_M28067_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 14.62, instruction count 21, allocated bytes for code 84 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 20.00, instruction count 15, allocated bytes for code 60 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 11723.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,12 +10,11 @@
; V00 this [V00,T01] ( 5, 4 ) ref -> x20 this class-hnd single-def <Internal.TypeSystem.TypeDesc>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> x19 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,T04] ( 2, 1 ) int -> x0
-;* V04 tmp2 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp3 [V05,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.TypeDesc>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
-;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V03 tmp1 [V03,T02] ( 2, 1 ) int -> x0
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V07 tmp5 [V07,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 8
+0 (0.00%) : 14172.dasm - System.Linq.Enumerable:WhereSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,17 +8,16 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T00] ( 10, 7 ) long -> x19 single-def
-; V01 arg0 [V01,T01] ( 8, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T01] ( 7, 5.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T02] ( 7, 5 ) ref -> x21 class-hnd exact single-def <System.Func`2[System.__Canon,ubyte]>
; V03 loc0 [V03,T07] ( 4, 3 ) ref -> x0 class-hnd single-def <System.Linq.Enumerable+Iterator`1[System.__Canon]>
-; V04 loc1 [V04,T09] ( 4, 2 ) ref -> x22 class-hnd single-def <System.__Canon[]>
-;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V04 loc1 [V04,T08] ( 4, 2 ) ref -> x22 class-hnd single-def <System.__Canon[]>
+; V05 loc2 [V05,T09] ( 3, 1.50) ref -> x23 class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T08] ( 3, 3 ) ref -> x23 class-hnd exact "spilling QMark2" <System.Collections.Generic.List`1[System.__Canon]>
-; V08 tmp2 [V08,T03] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]>
-; V09 tmp3 [V09,T04] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]>
-; V10 tmp4 [V10,T05] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]>
-; V11 tmp5 [V11,T06] ( 4, 4 ) ref -> x23 "Single return block return value"
+; V07 tmp1 [V07,T03] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]>
+; V08 tmp2 [V08,T04] ( 5, 5 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]>
+; V09 tmp3 [V09,T05] ( 5, 5 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]>
+; V10 tmp4 [V10,T06] ( 4, 4 ) ref -> x23 "Single return block return value"
;
; Lcl frame size = 8
@@ -115,13 +114,17 @@ G_M9951_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=6000
;; size=48 bbWeight=0.50 PerfScore 5.75
G_M9951_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23] +[x20-x21]
- ldr x0, [x20]
- ldr x1, [x19, #0x20]
- cmp x0, x1
- csel x23, x20, xzr, eq
+ ldr x0, [x19, #0x20]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
; gcrRegs +[x23]
cbz x23, G_M9951_IG09
ldr x0, [x19, #0x10]
+ ; gcrRegs -[x0]
bl CORINFO_HELP_NEWSFAST
; gcrRegs -[x20] +[x0]
; gcr arg pop 0
@@ -148,7 +151,7 @@ G_M9951_IG08: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000
mov x23, x19
; gcrRegs +[x23]
b G_M9951_IG10
- ;; size=72 bbWeight=0.50 PerfScore 10.00
+ ;; size=72 bbWeight=0.50 PerfScore 9.00
G_M9951_IG09: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x23] +[x20-x21]
ldr x0, [x19]
@@ -201,7 +204,7 @@ G_M9951_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 36, PerfScore 54.50, instruction count 89, allocated bytes for code 356 (MethodHash=a0c6d920) for method System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 356, prolog size 36, PerfScore 53.50, instruction count 89, allocated bytes for code 356 (MethodHash=a0c6d920) for method System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 23600.dasm - Generics+TestNativeLayoutGeneration:Run() (FullOpts)
@@ -9,10 +9,8 @@
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Generics+TestNativeLayoutGeneration+Used>
-;* V02 tmp2 [V02 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
-; V04 tmp4 [V04,T00] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
+; V02 tmp2 [V02,T00] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
;
; Lcl frame size = 8
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
92 |
85 |
2 |
5 |
-1,932 |
+48 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
1,447 |
1,441 |
6 |
0 |
-39,500 |
+212 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
38 |
37 |
1 |
0 |
-892 |
+4 |
| coreclr_tests.run.windows.arm64.checked.mch |
194 |
164 |
8 |
22 |
-4,400 |
+332 |
| libraries.crossgen2.windows.arm64.checked.mch |
1,114 |
1,104 |
3 |
7 |
-38,860 |
+12 |
| libraries.pmi.windows.arm64.checked.mch |
576 |
549 |
7 |
20 |
-17,412 |
+280 |
| libraries_tests.run.windows.arm64.Release.mch |
1,008 |
856 |
131 |
21 |
-22,940 |
+3,712 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
769 |
726 |
17 |
26 |
-23,724 |
+512 |
| realworld.run.windows.arm64.checked.mch |
139 |
130 |
3 |
6 |
-4,044 |
+64 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
126 |
118 |
0 |
8 |
-3,376 |
+0 |
|
5,503 |
5,210 |
178 |
115 |
-157,080 |
+5,176 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
22,552 |
4 |
22,548 |
230 (0.94%) |
1,895 (7.75%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
88,197 |
48,066 |
40,131 |
104 (0.11%) |
8,786 (9.06%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
47,872 |
36,693 |
11,179 |
61 (0.13%) |
601 (1.24%) |
| coreclr_tests.run.windows.arm64.checked.mch |
586,059 |
362,539 |
223,520 |
442 (0.07%) |
9,644 (1.62%) |
| libraries.crossgen2.windows.arm64.checked.mch |
243,824 |
15 |
243,809 |
0 (0.00%) |
7 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
273,973 |
6 |
273,967 |
2,059 (0.68%) |
30,898 (10.13%) |
| libraries_tests.run.windows.arm64.Release.mch |
597,499 |
460,799 |
136,700 |
901 (0.14%) |
28,555 (4.56%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
273,148 |
21,559 |
251,589 |
2,183 (0.69%) |
43,889 (13.84%) |
| realworld.run.windows.arm64.checked.mch |
28,578 |
3 |
28,575 |
370 (1.11%) |
4,666 (14.04%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
23,002 |
8 |
22,994 |
3 (0.01%) |
1,153 (4.77%) |
|
2,184,704 |
929,692 |
1,255,012 |
6,353 (0.27%) |
130,094 (5.62%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9044204 (overridden on cmd)
Total bytes of diff: 9042320 (overridden on cmd)
Total bytes of delta: -1884 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 6220.dasm (8.59 % of base)
4 : 2096.dasm (0.40 % of base)
Top file improvements (bytes):
-80 : 4486.dasm (-1.64 % of base)
-56 : 2768.dasm (-21.21 % of base)
-48 : 5883.dasm (-10.53 % of base)
-44 : 20623.dasm (-16.18 % of base)
-44 : 5853.dasm (-4.60 % of base)
-40 : 18237.dasm (-12.50 % of base)
-40 : 19431.dasm (-8.06 % of base)
-40 : 16998.dasm (-4.81 % of base)
-40 : 4862.dasm (-9.26 % of base)
-36 : 20486.dasm (-15.00 % of base)
-28 : 11710.dasm (-2.13 % of base)
-28 : 17429.dasm (-4.27 % of base)
-28 : 18890.dasm (-12.73 % of base)
-28 : 1070.dasm (-25.93 % of base)
-28 : 11731.dasm (-6.48 % of base)
-28 : 16330.dasm (-21.88 % of base)
-28 : 1725.dasm (-46.67 % of base)
-28 : 18767.dasm (-15.91 % of base)
-28 : 3798.dasm (-12.28 % of base)
-28 : 4662.dasm (-3.59 % of base)
56 total files with Code Size differences (54 improved, 2 regressed), 5 unchanged.
Top method regressions (bytes):
44 (8.59 % of base) : 6220.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
4 (0.40 % of base) : 2096.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
Top method improvements (bytes):
-80 (-1.64 % of base) : 4486.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-56 (-21.21 % of base) : 2768.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-48 (-10.53 % of base) : 5883.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-44 (-16.18 % of base) : 20623.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-4.60 % of base) : 5853.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-40 (-4.81 % of base) : 16998.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-40 (-12.50 % of base) : 18237.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-40 (-8.06 % of base) : 19431.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-40 (-9.26 % of base) : 4862.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-36 (-15.00 % of base) : 20486.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-28 (-4.27 % of base) : 17429.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-28 (-12.73 % of base) : 18890.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-28 (-15.91 % of base) : 18767.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-28 (-12.28 % of base) : 3798.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
-28 (-21.88 % of base) : 16330.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-28 (-2.13 % of base) : 11710.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
-28 (-20.59 % of base) : 8852.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-28 (-28.00 % of base) : 684.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-6.48 % of base) : 11731.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-28 (-25.93 % of base) : 1070.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
Top method regressions (percentages):
44 (8.59 % of base) : 6220.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
4 (0.40 % of base) : 2096.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 1725.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 3858.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-28 (-28.00 % of base) : 684.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-25.93 % of base) : 1070.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-24 (-22.22 % of base) : 16571.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-28 (-21.88 % of base) : 16330.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-56 (-21.21 % of base) : 2768.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-20.59 % of base) : 8852.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-20 (-20.00 % of base) : 11370.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-20 (-17.86 % of base) : 17208.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-24 (-16.67 % of base) : 22981.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
-24 (-16.22 % of base) : 11432.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-24 (-16.22 % of base) : 10417.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
-44 (-16.18 % of base) : 20623.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-16 (-16.00 % of base) : 6976.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-28 (-15.91 % of base) : 18767.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
-36 (-15.00 % of base) : 20486.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-24 (-14.63 % of base) : 15255.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-24 (-14.29 % of base) : 6739.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-24 (-13.33 % of base) : 16891.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (FullOpts)
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 36011172 (overridden on cmd)
Total bytes of diff: 35971884 (overridden on cmd)
Total bytes of delta: -39288 (-0.11 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
52 : 89583.dasm (2.87 % of base)
48 : 34535.dasm (2.55 % of base)
48 : 31813.dasm (2.54 % of base)
32 : 49939.dasm (1.80 % of base)
16 : 64726.dasm (6.90 % of base)
16 : 85929.dasm (7.41 % of base)
Top file improvements (bytes):
-396 : 63810.dasm (-8.60 % of base)
-56 : 4587.dasm (-11.97 % of base)
-56 : 68892.dasm (-5.32 % of base)
-48 : 70048.dasm (-8.39 % of base)
-48 : 69991.dasm (-14.63 % of base)
-44 : 27024.dasm (-9.91 % of base)
-44 : 19257.dasm (-9.91 % of base)
-32 : 19233.dasm (-6.35 % of base)
-32 : 27010.dasm (-6.35 % of base)
-28 : 13097.dasm (-3.30 % of base)
-28 : 13009.dasm (-3.30 % of base)
-28 : 16533.dasm (-3.30 % of base)
-28 : 4189.dasm (-3.30 % of base)
-28 : 5825.dasm (-5.15 % of base)
-28 : 6317.dasm (-5.15 % of base)
-28 : 63788.dasm (-8.43 % of base)
-28 : 64331.dasm (-2.01 % of base)
-28 : 6517.dasm (-3.30 % of base)
-28 : 9401.dasm (-5.15 % of base)
-28 : 13085.dasm (-3.30 % of base)
57 total files with Code Size differences (51 improved, 6 regressed), 0 unchanged.
Top method regressions (bytes):
52 (2.87 % of base) : 89583.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
48 (2.55 % of base) : 34535.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
48 (2.54 % of base) : 31813.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
32 (1.80 % of base) : 49939.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
16 (6.90 % of base) : 64726.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
16 (7.41 % of base) : 85929.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
Top method improvements (bytes):
-396 (-8.60 % of base) : 63810.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-56 (-5.32 % of base) : 68892.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-56 (-11.97 % of base) : 4587.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-48 (-14.63 % of base) : 69991.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-48 (-8.39 % of base) : 70048.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-44 (-9.91 % of base) : 27024.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-44 (-9.91 % of base) : 19257.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-32 (-6.35 % of base) : 19233.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.35 % of base) : 27010.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-2.01 % of base) : 64331.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax] (Tier1)
-28 (-9.46 % of base) : 63795.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-8.43 % of base) : 63788.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-28 (-28.00 % of base) : 13323.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-5.69 % of base) : 68676.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-28 (-3.30 % of base) : 13097.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 13009.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 16533.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-3.30 % of base) : 4189.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-5.15 % of base) : 5825.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-28 (-5.15 % of base) : 6317.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
16 (7.41 % of base) : 85929.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
16 (6.90 % of base) : 64726.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
52 (2.87 % of base) : 89583.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
48 (2.55 % of base) : 34535.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
48 (2.54 % of base) : 31813.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
32 (1.80 % of base) : 49939.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
Top method improvements (percentages):
-28 (-28.00 % of base) : 13323.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-24 (-17.14 % of base) : 63151.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-48 (-14.63 % of base) : 69991.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-13.64 % of base) : 68971.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-56 (-11.97 % of base) : 4587.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-24 (-10.71 % of base) : 69566.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-44 (-9.91 % of base) : 27024.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-44 (-9.91 % of base) : 19257.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-28 (-9.46 % of base) : 63795.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-396 (-8.60 % of base) : 63810.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-28 (-8.43 % of base) : 63788.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-48 (-8.39 % of base) : 70048.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-6.98 % of base) : 59127.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Tier1)
-20 (-6.41 % of base) : 17992.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-32 (-6.35 % of base) : 19233.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.35 % of base) : 27010.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-5.69 % of base) : 68676.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-16 (-5.41 % of base) : 69081.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-56 (-5.32 % of base) : 68892.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-24 (-5.22 % of base) : 51522.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
benchmarks.run_tiered.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14709248 (overridden on cmd)
Total bytes of diff: 14708360 (overridden on cmd)
Total bytes of delta: -888 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 15998.dasm (0.40 % of base)
Top file improvements (bytes):
-56 : 42902.dasm (-21.21 % of base)
-52 : 1977.dasm (-12.75 % of base)
-44 : 6721.dasm (-4.60 % of base)
-44 : 41248.dasm (-16.18 % of base)
-40 : 41321.dasm (-12.50 % of base)
-36 : 40896.dasm (-15.00 % of base)
-32 : 18265.dasm (-17.78 % of base)
-28 : 22638.dasm (-25.93 % of base)
-28 : 38429.dasm (-4.27 % of base)
-28 : 38526.dasm (-12.73 % of base)
-28 : 21378.dasm (-21.88 % of base)
-28 : 23861.dasm (-3.41 % of base)
-28 : 38816.dasm (-15.91 % of base)
-28 : 5978.dasm (-28.00 % of base)
-24 : 17731.dasm (-1.80 % of base)
-24 : 28300.dasm (-11.76 % of base)
-24 : 39757.dasm (-11.11 % of base)
-24 : 41447.dasm (-13.95 % of base)
-24 : 6736.dasm (-6.45 % of base)
-24 : 19290.dasm (-3.31 % of base)
38 total files with Code Size differences (37 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
4 (0.40 % of base) : 15998.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
Top method improvements (bytes):
-56 (-21.21 % of base) : 42902.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-52 (-12.75 % of base) : 1977.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-44 (-16.18 % of base) : 41248.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-44 (-4.60 % of base) : 6721.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
-40 (-12.50 % of base) : 41321.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-36 (-15.00 % of base) : 40896.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-32 (-17.78 % of base) : 18265.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-28 (-4.27 % of base) : 38429.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
-28 (-12.73 % of base) : 38526.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-28 (-15.91 % of base) : 38816.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-28 (-28.00 % of base) : 5978.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-21.88 % of base) : 21378.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-28 (-25.93 % of base) : 22638.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-28 (-3.41 % of base) : 23861.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-24 (-13.95 % of base) : 41447.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-24 (-17.14 % of base) : 38746.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-24 (-11.11 % of base) : 39757.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-24 (-3.31 % of base) : 19290.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
-24 (-6.45 % of base) : 6736.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-24 (-5.56 % of base) : 19321.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
4 (0.40 % of base) : 15998.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
Top method improvements (percentages):
-28 (-28.00 % of base) : 5978.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-28 (-25.93 % of base) : 22638.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-28 (-21.88 % of base) : 21378.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-56 (-21.21 % of base) : 42902.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-20 (-20.00 % of base) : 23427.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-32 (-17.78 % of base) : 18265.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-24 (-17.14 % of base) : 38746.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-44 (-16.18 % of base) : 41248.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-28 (-15.91 % of base) : 38816.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-36 (-15.00 % of base) : 40896.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-13.95 % of base) : 41447.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-52 (-12.75 % of base) : 1977.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-28 (-12.73 % of base) : 38526.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-40 (-12.50 % of base) : 41321.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-24 (-11.76 % of base) : 28300.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-24 (-11.11 % of base) : 39757.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-16 (-7.84 % of base) : 41554.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-24 (-6.45 % of base) : 6736.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-20 (-6.41 % of base) : 13809.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-20 (-5.81 % of base) : 1981.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
38 total methods with Code Size differences (37 improved, 1 regressed).
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 463642536 (overridden on cmd)
Total bytes of diff: 463638468 (overridden on cmd)
Total bytes of delta: -4068 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 397017.dasm (0.93 % of base)
104 : 396996.dasm (0.86 % of base)
60 : 495818.dasm (300.00 % of base)
16 : 254212.dasm (0.51 % of base)
12 : 389512.dasm (0.60 % of base)
12 : 540482.dasm (1.19 % of base)
12 : 267638.dasm (2.52 % of base)
4 : 579295.dasm (0.93 % of base)
Top file improvements (bytes):
-80 : 395717.dasm (-5.81 % of base)
-64 : 527389.dasm (-26.23 % of base)
-64 : 533819.dasm (-38.10 % of base)
-56 : 222089.dasm (-21.21 % of base)
-56 : 267444.dasm (-19.44 % of base)
-52 : 395599.dasm (-4.22 % of base)
-52 : 502091.dasm (-5.06 % of base)
-52 : 382837.dasm (-12.75 % of base)
-52 : 395716.dasm (-4.30 % of base)
-48 : 484749.dasm (-21.82 % of base)
-48 : 502117.dasm (-10.53 % of base)
-44 : 210925.dasm (-6.88 % of base)
-44 : 490103.dasm (-23.40 % of base)
-44 : 59317.dasm (-6.92 % of base)
-44 : 147730.dasm (-6.92 % of base)
-44 : 490115.dasm (-23.40 % of base)
-44 : 490117.dasm (-13.41 % of base)
-44 : 568.dasm (-6.92 % of base)
-44 : 252905.dasm (-6.96 % of base)
-44 : 500927.dasm (-16.18 % of base)
52 total files with Code Size differences (44 improved, 8 regressed), 21 unchanged.
Top method regressions (bytes):
112 (0.93 % of base) : 397017.dasm - Program:TestCase0003() (FullOpts)
104 (0.86 % of base) : 396996.dasm - Program:TestCase0003() (FullOpts)
60 (300.00 % of base) : 495818.dasm - T:TestEntryPoint():int (FullOpts)
16 (0.51 % of base) : 254212.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
12 (1.19 % of base) : 540482.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
12 (0.60 % of base) : 389512.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
12 (2.52 % of base) : 267638.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
4 (0.93 % of base) : 579295.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
Top method improvements (bytes):
-80 (-5.81 % of base) : 395717.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-64 (-26.23 % of base) : 527389.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-64 (-38.10 % of base) : 533819.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-56 (-21.21 % of base) : 222089.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-56 (-19.44 % of base) : 267444.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-52 (-4.30 % of base) : 395716.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-52 (-4.22 % of base) : 395599.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-52 (-5.06 % of base) : 502091.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-52 (-12.75 % of base) : 382837.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-48 (-10.53 % of base) : 502117.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-48 (-21.82 % of base) : 484749.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-44 (-16.18 % of base) : 500927.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-23.40 % of base) : 490115.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-13.41 % of base) : 490117.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-44 (-23.40 % of base) : 490103.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-6.88 % of base) : 210925.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 59317.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 147730.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.92 % of base) : 568.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
-44 (-6.96 % of base) : 252905.dasm - System.Reflection.Emit.DynamicMethod:CreateDelegate(System.Type,System.Object):System.Delegate:this (Instrumented Tier1)
Top method regressions (percentages):
60 (300.00 % of base) : 495818.dasm - T:TestEntryPoint():int (FullOpts)
12 (2.52 % of base) : 267638.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
12 (1.19 % of base) : 540482.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
112 (0.93 % of base) : 397017.dasm - Program:TestCase0003() (FullOpts)
4 (0.93 % of base) : 579295.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
104 (0.86 % of base) : 396996.dasm - Program:TestCase0003() (FullOpts)
12 (0.60 % of base) : 389512.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
16 (0.51 % of base) : 254212.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
Top method improvements (percentages):
-64 (-38.10 % of base) : 533819.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-24 (-28.57 % of base) : 591793.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-28.00 % of base) : 1311.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-64 (-26.23 % of base) : 527389.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-44 (-23.40 % of base) : 490115.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-44 (-23.40 % of base) : 490103.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-48 (-21.82 % of base) : 484749.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-21.21 % of base) : 591942.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-56 (-21.21 % of base) : 222089.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-24 (-20.00 % of base) : 580041.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-20 (-20.00 % of base) : 539062.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-56 (-19.44 % of base) : 267444.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-28 (-18.92 % of base) : 487152.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-28 (-18.92 % of base) : 221821.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-20 (-17.86 % of base) : 497656.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-32 (-17.78 % of base) : 267134.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-28 (-17.50 % of base) : 578929.dasm - System.CommandLine.Binding.ArgumentConverter:GetValueOrDefault[System.__Canon](System.CommandLine.Binding.ArgumentConversionResult):System.__Canon (FullOpts)
-28 (-17.50 % of base) : 484827.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-28 (-17.50 % of base) : 221883.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-44 (-16.18 % of base) : 500927.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
libraries.crossgen2.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59003176 (overridden on cmd)
Total bytes of diff: 58964328 (overridden on cmd)
Total bytes of delta: -38848 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 234749.dasm (1.09 % of base)
4 : 177943.dasm (1.09 % of base)
4 : 156531.dasm (1.09 % of base)
Top file improvements (bytes):
-384 : 231407.dasm (-15.76 % of base)
-360 : 231406.dasm (-15.68 % of base)
-336 : 231404.dasm (-15.58 % of base)
-320 : 117904.dasm (-13.91 % of base)
-320 : 134695.dasm (-20.36 % of base)
-312 : 231402.dasm (-15.48 % of base)
-288 : 231400.dasm (-15.35 % of base)
-264 : 231398.dasm (-15.21 % of base)
-240 : 231396.dasm (-15.04 % of base)
-216 : 31181.dasm (-17.14 % of base)
-216 : 31182.dasm (-16.77 % of base)
-216 : 231394.dasm (-14.84 % of base)
-192 : 231392.dasm (-14.59 % of base)
-176 : 27615.dasm (-47.31 % of base)
-168 : 231390.dasm (-14.29 % of base)
-156 : 27630.dasm (-40.21 % of base)
-144 : 231388.dasm (-13.90 % of base)
-144 : 231224.dasm (-9.00 % of base)
-140 : 30098.dasm (-14.71 % of base)
-136 : 231370.dasm (-10.76 % of base)
70 total files with Code Size differences (67 improved, 3 regressed), 7 unchanged.
Top method regressions (bytes):
4 (1.09 % of base) : 234749.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 177943.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 156531.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
Top method improvements (bytes):
-384 (-15.76 % of base) : 231407.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)
-360 (-15.68 % of base) : 231406.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)
-336 (-15.58 % of base) : 231404.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)
-320 (-13.91 % of base) : 117904.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-320 (-20.36 % of base) : 134695.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-312 (-15.48 % of base) : 231402.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)
-288 (-15.35 % of base) : 231400.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)
-264 (-15.21 % of base) : 231398.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)
-240 (-15.04 % of base) : 231396.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)
-216 (-14.84 % of base) : 231394.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)
-216 (-17.14 % of base) : 31181.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-216 (-16.77 % of base) : 31182.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-192 (-14.59 % of base) : 231392.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)
-176 (-47.31 % of base) : 27615.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-168 (-14.29 % of base) : 231390.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)
-156 (-40.21 % of base) : 27630.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-144 (-13.90 % of base) : 231388.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)
-144 (-9.00 % of base) : 231224.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)
-140 (-14.71 % of base) : 30098.dasm - Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Equals(Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]):ubyte:this (FullOpts)
-136 (-10.76 % of base) : 231370.dasm - RailwaySharp.ErrorHandling.Trial:Apply[System.__Canon,System.__Canon,System.__Canon](RailwaySharp.ErrorHandling.Result`2[System.Func`2[System.__Canon,System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon] (FullOpts)
Top method regressions (percentages):
4 (1.09 % of base) : 234749.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 177943.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
4 (1.09 % of base) : 156531.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
Top method improvements (percentages):
-176 (-47.31 % of base) : 27615.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-156 (-40.21 % of base) : 27630.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-36 (-34.62 % of base) : 31627.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
-36 (-34.62 % of base) : 31150.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-34.62 % of base) : 202203.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-36 (-33.33 % of base) : 117968.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 157587.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 178995.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-36 (-33.33 % of base) : 218078.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-36 (-32.14 % of base) : 219348.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)
-36 (-32.14 % of base) : 222777.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-32 (-30.77 % of base) : 202225.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-48 (-28.57 % of base) : 201527.dasm - System.Text.Json.Serialization.Converters.ArrayConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-36 (-28.12 % of base) : 21798.dasm - System.Buffers.SharedArrayPool`1+<>c[System.__Canon]:<InitializeTlsBucketsAndTrimming>b__11_0(System.Object):ubyte:this (FullOpts)
-36 (-28.12 % of base) : 228241.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 210422.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore+<>c[System.__Canon]:<ProcessAsyncIfNecessary_Slow>b__30_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 210273.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`3+<>c[System.__Canon,System.__Canon,System.__Canon]:<.ctor>b__7_4(System.Object,System.Threading.CancellationToken):this (FullOpts)
-36 (-28.12 % of base) : 210449.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<OfferAsyncIfNecessary>b__29_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 210477.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__49_0(System.Object):this (FullOpts)
-36 (-28.12 % of base) : 210358.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 58134360 (overridden on cmd)
Total bytes of diff: 58117228 (overridden on cmd)
Total bytes of delta: -17132 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
116 : 111765.dasm (4.72 % of base)
72 : 104926.dasm (2.65 % of base)
72 : 180213.dasm (1.35 % of base)
8 : 178831.dasm (1.67 % of base)
4 : 265743.dasm (2.63 % of base)
4 : 146728.dasm (0.93 % of base)
4 : 185376.dasm (2.63 % of base)
Top file improvements (bytes):
-600 : 251039.dasm (-25.17 % of base)
-320 : 89798.dasm (-19.00 % of base)
-320 : 140272.dasm (-16.74 % of base)
-264 : 293928.dasm (-36.46 % of base)
-184 : 27406.dasm (-23.00 % of base)
-184 : 27413.dasm (-22.22 % of base)
-168 : 214707.dasm (-42.00 % of base)
-168 : 214063.dasm (-8.27 % of base)
-120 : 27570.dasm (-18.99 % of base)
-120 : 27579.dasm (-18.29 % of base)
-116 : 9767.dasm (-11.28 % of base)
-104 : 145478.dasm (-1.81 % of base)
-80 : 228821.dasm (-1.70 % of base)
-76 : 179739.dasm (-6.64 % of base)
-72 : 214628.dasm (-34.62 % of base)
-72 : 28478.dasm (-13.74 % of base)
-72 : 295646.dasm (-14.88 % of base)
-68 : 28471.dasm (-14.17 % of base)
-64 : 180603.dasm (-23.88 % of base)
-60 : 23465.dasm (-22.06 % of base)
60 total files with Code Size differences (53 improved, 7 regressed), 20 unchanged.
Top method regressions (bytes):
116 (4.72 % of base) : 111765.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
72 (2.65 % of base) : 104926.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
72 (1.35 % of base) : 180213.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
8 (1.67 % of base) : 178831.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
4 (0.93 % of base) : 146728.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
4 (2.63 % of base) : 265743.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (2.63 % of base) : 185376.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
Top method improvements (bytes):
-600 (-25.17 % of base) : 251039.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-320 (-19.00 % of base) : 89798.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-320 (-16.74 % of base) : 140272.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-264 (-36.46 % of base) : 293928.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-184 (-23.00 % of base) : 27406.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-184 (-22.22 % of base) : 27413.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-168 (-8.27 % of base) : 214063.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-168 (-42.00 % of base) : 214707.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-120 (-18.29 % of base) : 27579.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-120 (-18.99 % of base) : 27570.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-116 (-11.28 % of base) : 9767.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-104 (-1.81 % of base) : 145478.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-80 (-1.70 % of base) : 228821.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-76 (-6.64 % of base) : 179739.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
-72 (-14.88 % of base) : 295646.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-72 (-13.74 % of base) : 28478.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Xml.Serialization.XmlSerializer):System.__Canon:this (FullOpts)
-72 (-34.62 % of base) : 214628.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-68 (-14.17 % of base) : 28471.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Runtime.Serialization.XmlObjectSerializer):System.__Canon:this (FullOpts)
-64 (-23.88 % of base) : 180603.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts)
-60 (-22.06 % of base) : 23465.dasm - Microsoft.FSharp.Collections.Internal+Generator+EnumeratorWrappingLazyGenerator`1[ubyte]:System.Collections.IEnumerator.MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
116 (4.72 % of base) : 111765.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
72 (2.65 % of base) : 104926.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
4 (2.63 % of base) : 265743.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (2.63 % of base) : 185376.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
8 (1.67 % of base) : 178831.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
72 (1.35 % of base) : 180213.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
4 (0.93 % of base) : 146728.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 27129.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-46.67 % of base) : 226200.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-168 (-42.00 % of base) : 214707.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-264 (-36.46 % of base) : 293928.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-72 (-34.62 % of base) : 214628.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-40 (-33.33 % of base) : 255820.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-24 (-31.58 % of base) : 263811.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)
-24 (-30.00 % of base) : 183608.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
-32 (-28.57 % of base) : 10083.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-32 (-28.57 % of base) : 301549.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-28.57 % of base) : 301563.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 143166.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
-32 (-27.59 % of base) : 241255.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
-32 (-27.59 % of base) : 228253.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
-32 (-27.59 % of base) : 228262.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
-24 (-27.27 % of base) : 197420.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
-24 (-27.27 % of base) : 197305.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
-28 (-26.92 % of base) : 253969.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-28 (-26.92 % of base) : 211902.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)
-24 (-26.09 % of base) : 158617.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 270919832 (overridden on cmd)
Total bytes of diff: 270900604 (overridden on cmd)
Total bytes of delta: -19228 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
120 : 499199.dasm (9.29 % of base)
48 : 230592.dasm (1.28 % of base)
44 : 318155.dasm (1.18 % of base)
44 : 466379.dasm (1.18 % of base)
44 : 615828.dasm (1.15 % of base)
44 : 151525.dasm (9.09 % of base)
44 : 225529.dasm (1.22 % of base)
44 : 372147.dasm (1.10 % of base)
44 : 515420.dasm (1.18 % of base)
44 : 574034.dasm (7.80 % of base)
40 : 299572.dasm (1.16 % of base)
40 : 612682.dasm (1.05 % of base)
40 : 615815.dasm (1.16 % of base)
40 : 311675.dasm (1.16 % of base)
40 : 311687.dasm (1.11 % of base)
40 : 473140.dasm (1.16 % of base)
40 : 499672.dasm (1.04 % of base)
40 : 499890.dasm (1.15 % of base)
40 : 116867.dasm (1.05 % of base)
40 : 299520.dasm (1.07 % of base)
Top file improvements (bytes):
-104 : 391019.dasm (-4.77 % of base)
-100 : 481232.dasm (-7.16 % of base)
-84 : 499269.dasm (-4.45 % of base)
-72 : 268941.dasm (-10.47 % of base)
-68 : 263034.dasm (-2.69 % of base)
-64 : 296630.dasm (-21.05 % of base)
-60 : 404437.dasm (-2.01 % of base)
-60 : 533205.dasm (-14.29 % of base)
-60 : 88909.dasm (-1.11 % of base)
-60 : 150462.dasm (-1.41 % of base)
-60 : 401521.dasm (-5.21 % of base)
-56 : 226489.dasm (-0.46 % of base)
-56 : 450986.dasm (-2.26 % of base)
-56 : 615473.dasm (-16.28 % of base)
-56 : 162886.dasm (-2.32 % of base)
-56 : 185678.dasm (-2.30 % of base)
-56 : 288981.dasm (-2.24 % of base)
-56 : 348972.dasm (-22.22 % of base)
-56 : 269501.dasm (-2.24 % of base)
-56 : 326132.dasm (-22.22 % of base)
83 total files with Code Size differences (51 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
120 (9.29 % of base) : 499199.dasm - Moq.Extensions:IsOrContainsTypeMatcher(System.Type):ubyte (Tier1)
48 (1.28 % of base) : 230592.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (9.09 % of base) : 151525.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
44 (7.80 % of base) : 574034.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
44 (1.18 % of base) : 318155.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.18 % of base) : 466379.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.15 % of base) : 615828.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.22 % of base) : 225529.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.10 % of base) : 372147.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.18 % of base) : 515420.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.05 % of base) : 612682.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.11 % of base) : 311687.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.04 % of base) : 499672.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.05 % of base) : 116867.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.07 % of base) : 299520.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.16 % of base) : 299572.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.16 % of base) : 615815.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.16 % of base) : 311675.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.16 % of base) : 473140.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
40 (1.15 % of base) : 499890.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.Reflection.MethodInfo,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method improvements (bytes):
-104 (-4.77 % of base) : 391019.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
-100 (-7.16 % of base) : 481232.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-84 (-4.45 % of base) : 499269.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitExpression(System.Linq.Expressions.Expression,int):this (Tier1)
-72 (-10.47 % of base) : 268941.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
-68 (-2.69 % of base) : 263034.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
-64 (-21.05 % of base) : 296630.dasm - (dynamicClass):lambda_method1990(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
-60 (-1.11 % of base) : 88909.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-60 (-1.41 % of base) : 150462.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-60 (-5.21 % of base) : 401521.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier1)
-60 (-14.29 % of base) : 533205.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
-60 (-2.01 % of base) : 404437.dasm - System.Xml.RwFactoryWriterTests.CXmlDriverEngine:ProcessIncludes(System.String[],System.String,System.Xml.Linq.XElement,OLEDB.Test.ModuleCore.MyDict`2[System.String,System.Object],System.Collections.IList):this (Tier1)
-56 (-11.97 % of base) : 79663.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-56 (-16.28 % of base) : 615473.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-56 (-22.22 % of base) : 348972.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-56 (-22.22 % of base) : 326132.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-56 (-20.29 % of base) : 567984.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-56 (-2.26 % of base) : 450986.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
-56 (-2.32 % of base) : 162886.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
-56 (-2.30 % of base) : 185678.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
-56 (-2.24 % of base) : 288981.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
Top method regressions (percentages):
16 (10.00 % of base) : 406235.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
120 (9.29 % of base) : 499199.dasm - Moq.Extensions:IsOrContainsTypeMatcher(System.Type):ubyte (Tier1)
44 (9.09 % of base) : 151525.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
16 (8.33 % of base) : 147479.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryCastToImmutableMap(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],byref):ubyte (Tier1)
44 (7.80 % of base) : 574034.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
8 (3.70 % of base) : 349811.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (Tier1)
24 (3.33 % of base) : 147478.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
12 (3.26 % of base) : 282750.dasm - System.Threading.CancellationTokenSource:Invoke(System.Delegate,System.Object,System.Threading.CancellationTokenSource) (Tier1)
20 (3.23 % of base) : 384678.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
8 (1.96 % of base) : 173672.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
8 (1.36 % of base) : 320040.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Add(System.__Canon):this (Tier1)
4 (1.35 % of base) : 613739.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAnyImpl>b__66_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
24 (1.33 % of base) : 568696.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
48 (1.28 % of base) : 230592.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
8 (1.25 % of base) : 614235.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+<>c:<CompleteTaskAsync>b__30_0(System.Object):this (Tier1)
44 (1.22 % of base) : 225529.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.18 % of base) : 515420.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.18 % of base) : 318155.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
44 (1.18 % of base) : 466379.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
4 (1.16 % of base) : 614160.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAllImpl>b__57_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task[]],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
Top method improvements (percentages):
-28 (-46.67 % of base) : 549152.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-35.29 % of base) : 54612.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-48 (-30.77 % of base) : 499538.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-32 (-28.57 % of base) : 264765.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-32 (-28.57 % of base) : 117440.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-28.00 % of base) : 3726.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-32 (-27.59 % of base) : 552512.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (Tier1)
-24 (-23.08 % of base) : 577318.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-56 (-22.22 % of base) : 348972.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-56 (-22.22 % of base) : 326132.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-28 (-21.88 % of base) : 60413.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-48 (-21.82 % of base) : 173174.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
-64 (-21.05 % of base) : 296630.dasm - (dynamicClass):lambda_method1990(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
-32 (-20.51 % of base) : 55976.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (Tier1)
-40 (-20.41 % of base) : 294590.dasm - (dynamicClass):lambda_method12(System.Runtime.CompilerServices.Closure):System.Object (FullOpts)
-56 (-20.29 % of base) : 567984.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-20 (-20.00 % of base) : 61475.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetMethodSymbolForMemberRef(System.Reflection.Metadata.MemberReferenceHandle,System.__Canon):System.__Canon:this (Tier1)
-20 (-20.00 % of base) : 220872.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-32 (-19.51 % of base) : 119266.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (Tier1)
-24 (-19.35 % of base) : 295761.dasm - (dynamicClass):lambda_method1623(System.Runtime.CompilerServices.Closure):int (FullOpts)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 135024244 (overridden on cmd)
Total bytes of diff: 135001032 (overridden on cmd)
Total bytes of delta: -23212 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
168 : 230209.dasm (7.62 % of base)
76 : 146802.dasm (14.07 % of base)
48 : 95293.dasm (92.31 % of base)
44 : 187356.dasm (2.34 % of base)
40 : 93885.dasm (43.48 % of base)
40 : 94916.dasm (43.48 % of base)
12 : 37826.dasm (2.97 % of base)
12 : 37829.dasm (2.97 % of base)
12 : 38165.dasm (4.17 % of base)
12 : 38379.dasm (3.09 % of base)
12 : 38264.dasm (2.70 % of base)
12 : 38544.dasm (1.71 % of base)
8 : 38282.dasm (1.80 % of base)
4 : 38413.dasm (0.40 % of base)
4 : 93784.dasm (0.08 % of base)
4 : 38261.dasm (0.49 % of base)
4 : 97914.dasm (2.63 % of base)
Top file improvements (bytes):
-600 : 62908.dasm (-25.17 % of base)
-384 : 173170.dasm (-15.79 % of base)
-352 : 172054.dasm (-12.59 % of base)
-304 : 173164.dasm (-12.38 % of base)
-296 : 199266.dasm (-17.05 % of base)
-296 : 217125.dasm (-17.05 % of base)
-244 : 13880.dasm (-17.04 % of base)
-224 : 173166.dasm (-12.25 % of base)
-176 : 173162.dasm (-6.89 % of base)
-160 : 173167.dasm (-8.97 % of base)
-160 : 203850.dasm (-7.53 % of base)
-160 : 208174.dasm (-8.97 % of base)
-160 : 205205.dasm (-7.53 % of base)
-144 : 62757.dasm (-12.41 % of base)
-140 : 314702.dasm (-2.60 % of base)
-128 : 216368.dasm (-3.03 % of base)
-124 : 172735.dasm (-6.83 % of base)
-124 : 228199.dasm (-7.93 % of base)
-120 : 173169.dasm (-8.96 % of base)
-116 : 173433.dasm (-3.48 % of base)
71 total files with Code Size differences (54 improved, 17 regressed), 21 unchanged.
Top method regressions (bytes):
168 (7.62 % of base) : 230209.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
76 (14.07 % of base) : 146802.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
48 (92.31 % of base) : 95293.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
44 (2.34 % of base) : 187356.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
40 (43.48 % of base) : 94916.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
40 (43.48 % of base) : 93885.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
12 (2.70 % of base) : 38264.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37829.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37826.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.71 % of base) : 38544.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (4.17 % of base) : 38165.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (3.09 % of base) : 38379.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
8 (1.80 % of base) : 38282.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.40 % of base) : 38413.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.49 % of base) : 38261.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:ContainSingle(System.String,System.Object[]):FluentAssertions.AndWhichConstraint`2[System.__Canon,System.__Canon]:this (FullOpts)
4 (2.63 % of base) : 97914.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
4 (0.08 % of base) : 93784.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
Top method improvements (bytes):
-600 (-25.17 % of base) : 62908.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-384 (-15.79 % of base) : 173170.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-352 (-12.59 % of base) : 172054.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-304 (-12.38 % of base) : 173164.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-296 (-17.05 % of base) : 199266.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)
-296 (-17.05 % of base) : 217125.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)
-244 (-17.04 % of base) : 13880.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)
-224 (-12.25 % of base) : 173166.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-176 (-6.89 % of base) : 173162.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-160 (-7.53 % of base) : 203850.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-160 (-7.53 % of base) : 205205.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-160 (-8.97 % of base) : 173167.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-160 (-8.97 % of base) : 208174.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-144 (-12.41 % of base) : 62757.dasm - System.CodeDom.Compiler.Tests.CodeGenerationTests:GenerateCode(System.CodeDom.CodeObject,System.CodeDom.Compiler.CodeDomProvider):System.String (FullOpts)
-140 (-2.60 % of base) : 314702.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)
-128 (-3.03 % of base) : 216368.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)
-124 (-7.93 % of base) : 228199.dasm - Internal.Cryptography.Pal.Windows.PkcsPalWindows:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,ubyte,ubyte):System.__Canon (FullOpts)
-124 (-6.83 % of base) : 172735.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-120 (-8.96 % of base) : 173169.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (FullOpts)
-116 (-3.48 % of base) : 173433.dasm - XmlSerializerTests:Xml_CollectionRoot_MorePrimitiveTypes() (FullOpts)
Top method regressions (percentages):
48 (92.31 % of base) : 95293.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
40 (43.48 % of base) : 94916.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
40 (43.48 % of base) : 93885.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
76 (14.07 % of base) : 146802.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)
168 (7.62 % of base) : 230209.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
12 (4.17 % of base) : 38165.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (3.09 % of base) : 38379.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:BeEmpty(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37829.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeFalse(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.97 % of base) : 37826.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:BeTrue(System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (2.70 % of base) : 38264.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (2.63 % of base) : 97914.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
44 (2.34 % of base) : 187356.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
8 (1.80 % of base) : 38282.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
12 (1.71 % of base) : 38544.dasm - FluentAssertions.Primitives.ReferenceTypeAssertions`2[System.__Canon,System.__Canon]:BeOfType(System.Type,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.49 % of base) : 38261.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:ContainSingle(System.String,System.Object[]):FluentAssertions.AndWhichConstraint`2[System.__Canon,System.__Canon]:this (FullOpts)
4 (0.40 % of base) : 38413.dasm - FluentAssertions.Collections.GenericCollectionAssertions`3[System.__Canon,System.__Canon,System.__Canon]:BeEquivalentTo[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
4 (0.08 % of base) : 93784.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
Top method improvements (percentages):
-28 (-46.67 % of base) : 36762.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-46.67 % of base) : 146523.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-24 (-40.00 % of base) : 30737.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)
-56 (-35.00 % of base) : 171206.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-72 (-34.62 % of base) : 172550.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-40 (-33.33 % of base) : 67583.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
-44 (-33.33 % of base) : 173199.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-24 (-31.58 % of base) : 88952.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)
-24 (-31.58 % of base) : 137745.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 43005.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-24 (-30.00 % of base) : 48644.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
-24 (-30.00 % of base) : 42998.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48638.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 43000.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-24 (-30.00 % of base) : 48635.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
-32 (-28.57 % of base) : 41165.dasm - Microsoft.Extensions.Logging.Testing.TestLogger+<>c__DisplayClass15_0`1[System.__Canon]:<Log>b__0(System.Object,System.Exception):System.String:this (FullOpts)
-32 (-28.57 % of base) : 192806.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
-32 (-28.57 % of base) : 75552.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-32 (-28.57 % of base) : 130606.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-28.00 % of base) : 98677.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.__Canon,System.__Canon]:Fetch(System.Object):System.Object:this (FullOpts)
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11030528 (overridden on cmd)
Total bytes of diff: 11026548 (overridden on cmd)
Total bytes of delta: -3980 (-0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 4833.dasm (8.59 % of base)
16 : 4655.dasm (4.35 % of base)
4 : 14506.dasm (0.40 % of base)
Top file improvements (bytes):
-192 : 31394.dasm (-34.29 % of base)
-136 : 32137.dasm (-34.69 % of base)
-120 : 32837.dasm (-28.30 % of base)
-68 : 32357.dasm (-6.91 % of base)
-68 : 33115.dasm (-20.24 % of base)
-64 : 27163.dasm (-6.81 % of base)
-64 : 31378.dasm (-25.81 % of base)
-60 : 31390.dasm (-16.48 % of base)
-60 : 8284.dasm (-32.61 % of base)
-60 : 32014.dasm (-20.55 % of base)
-56 : 4864.dasm (-22.22 % of base)
-56 : 6602.dasm (-4.09 % of base)
-56 : 9590.dasm (-8.70 % of base)
-56 : 31352.dasm (-2.52 % of base)
-52 : 29604.dasm (-8.28 % of base)
-44 : 17448.dasm (-16.18 % of base)
-44 : 19946.dasm (-3.20 % of base)
-44 : 29360.dasm (-2.68 % of base)
-40 : 27737.dasm (-8.06 % of base)
-40 : 31347.dasm (-17.86 % of base)
64 total files with Code Size differences (61 improved, 3 regressed), 6 unchanged.
Top method regressions (bytes):
44 (8.59 % of base) : 4833.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
16 (4.35 % of base) : 4655.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
4 (0.40 % of base) : 14506.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
Top method improvements (bytes):
-192 (-34.29 % of base) : 31394.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)
-136 (-34.69 % of base) : 32137.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-120 (-28.30 % of base) : 32837.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)
-68 (-6.91 % of base) : 32357.dasm - System.Management.Automation.Internal.PSDataCollectionStream`1[System.__Canon]:Write(System.Object,ubyte):int:this (FullOpts)
-68 (-20.24 % of base) : 33115.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-64 (-6.81 % of base) : 27163.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)
-64 (-25.81 % of base) : 31378.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-60 (-32.61 % of base) : 8284.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-60 (-20.55 % of base) : 32014.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-60 (-16.48 % of base) : 31390.dasm - System.Management.Automation.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,ubyte,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-56 (-8.70 % of base) : 9590.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)
-56 (-4.09 % of base) : 6602.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)
-56 (-2.52 % of base) : 31352.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)
-56 (-22.22 % of base) : 4864.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-52 (-8.28 % of base) : 29604.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)
-44 (-3.20 % of base) : 19946.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)
-44 (-16.18 % of base) : 17448.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-44 (-2.68 % of base) : 29360.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-40 (-12.50 % of base) : 7838.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
-40 (-8.06 % of base) : 27737.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
Top method regressions (percentages):
44 (8.59 % of base) : 4833.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
16 (4.35 % of base) : 4655.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
4 (0.40 % of base) : 14506.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
Top method improvements (percentages):
-136 (-34.69 % of base) : 32137.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-192 (-34.29 % of base) : 31394.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)
-60 (-32.61 % of base) : 8284.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-24 (-31.58 % of base) : 31473.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-120 (-28.30 % of base) : 32837.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)
-28 (-28.00 % of base) : 684.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-28 (-25.93 % of base) : 18088.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-64 (-25.81 % of base) : 31378.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-20 (-23.81 % of base) : 31553.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
-28 (-23.33 % of base) : 9942.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
-56 (-22.22 % of base) : 4864.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-28 (-21.21 % of base) : 4542.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)
-20 (-20.83 % of base) : 16365.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-60 (-20.55 % of base) : 32014.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-68 (-20.24 % of base) : 33115.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-32 (-19.05 % of base) : 32146.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-28 (-18.42 % of base) : 9544.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-20 (-17.86 % of base) : 16016.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-40 (-17.86 % of base) : 31347.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-28 (-17.50 % of base) : 9184.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
smoke_tests.nativeaot.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3513408 (overridden on cmd)
Total bytes of diff: 3510032 (overridden on cmd)
Total bytes of delta: -3376 (-0.10 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-88 : 3133.dasm (-19.13 % of base)
-80 : 683.dasm (-19.05 % of base)
-60 : 3021.dasm (-20.83 % of base)
-60 : 3024.dasm (-20.55 % of base)
-60 : 8983.dasm (-22.06 % of base)
-60 : 8980.dasm (-22.39 % of base)
-56 : 7846.dasm (-21.54 % of base)
-56 : 13347.dasm (-23.33 % of base)
-56 : 9299.dasm (-18.18 % of base)
-48 : 22130.dasm (-18.18 % of base)
-40 : 11533.dasm (-23.26 % of base)
-32 : 13647.dasm (-8.42 % of base)
-32 : 7958.dasm (-8.25 % of base)
-32 : 7961.dasm (-8.25 % of base)
-32 : 13644.dasm (-8.70 % of base)
-32 : 15196.dasm (-9.20 % of base)
-32 : 13639.dasm (-8.70 % of base)
-32 : 13650.dasm (-8.42 % of base)
-28 : 23579.dasm (-15.56 % of base)
-28 : 3285.dasm (-12.73 % of base)
61 total files with Code Size differences (61 improved, 0 regressed), 8 unchanged.
Top method improvements (bytes):
-88 (-19.13 % of base) : 3133.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-80 (-19.05 % of base) : 683.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-60 (-20.55 % of base) : 3024.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-60 (-22.06 % of base) : 8983.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-60 (-20.83 % of base) : 3021.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-60 (-22.39 % of base) : 8980.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-56 (-18.18 % of base) : 9299.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-56 (-21.54 % of base) : 7846.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-56 (-23.33 % of base) : 13347.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-48 (-18.18 % of base) : 22130.dasm - System.Reflection.AssemblyName:Clone():System.Object:this (FullOpts)
-40 (-23.26 % of base) : 11533.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-32 (-9.20 % of base) : 15196.dasm - PInvokeTests.Program+Delegate_Int_AggressiveInlining:InvokeMulticastThunk(int,int,int,int,int,int,int,int,int,int):int:this (FullOpts)
-32 (-8.42 % of base) : 13650.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.ByteCollection,System.Type):ubyte[] (FullOpts)
-32 (-8.25 % of base) : 7961.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.Int16Collection,System.Type):short[] (FullOpts)
-32 (-8.70 % of base) : 13644.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.Int16Collection,System.Type):short[] (FullOpts)
-32 (-8.42 % of base) : 13647.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.SByteCollection,System.Type):byte[] (FullOpts)
-32 (-8.25 % of base) : 7958.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.UInt16Collection,System.Type):ushort[] (FullOpts)
-32 (-8.70 % of base) : 13639.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:ToArray(Internal.Metadata.NativeFormat.UInt16Collection,System.Type):ushort[] (FullOpts)
-28 (-23.33 % of base) : 10302.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-28 (-23.33 % of base) : 23905.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
Top method improvements (percentages):
-24 (-30.00 % of base) : 13068.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-24 (-30.00 % of base) : 7210.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-24 (-28.57 % of base) : 8868.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
-20 (-26.32 % of base) : 10242.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-20 (-26.32 % of base) : 23852.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-28 (-23.33 % of base) : 10302.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-28 (-23.33 % of base) : 23905.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
-56 (-23.33 % of base) : 13347.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-40 (-23.26 % of base) : 11533.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-60 (-22.39 % of base) : 8980.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-60 (-22.06 % of base) : 8983.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-56 (-21.54 % of base) : 7846.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-60 (-20.83 % of base) : 3021.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-20 (-20.83 % of base) : 13186.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-60 (-20.55 % of base) : 3024.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-20 (-20.00 % of base) : 22155.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-88 (-19.13 % of base) : 3133.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-80 (-19.05 % of base) : 683.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-20 (-18.52 % of base) : 22157.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
-20 (-18.52 % of base) : 22156.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
windows x64
Diffs are based on 2,242,237 contexts (928,740 MinOpts, 1,313,497 FullOpts).
MISSED contexts: base: 6,816 (0.29%), diff: 130,964 (5.52%)
Overall (-88,168 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x64.checked.mch |
7,230,808 |
-1,304 |
| benchmarks.run_pgo.windows.x64.checked.mch |
30,419,246 |
-4,843 |
| benchmarks.run_tiered.windows.x64.checked.mch |
12,109,845 |
-513 |
| coreclr_tests.run.windows.x64.checked.mch |
368,823,570 |
-2,042 |
| libraries.crossgen2.windows.x64.checked.mch |
39,443,487 |
-30,602 |
| libraries.pmi.windows.x64.checked.mch |
44,521,914 |
-10,790 |
| libraries_tests.run.windows.x64.Release.mch |
240,228,942 |
-18,425 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
107,828,666 |
-14,538 |
| realworld.run.windows.x64.checked.mch |
9,790,351 |
-2,802 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
4,588,644 |
-2,309 |
FullOpts (-88,168 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x64.checked.mch |
7,230,447 |
-1,304 |
| benchmarks.run_pgo.windows.x64.checked.mch |
16,421,641 |
-4,843 |
| benchmarks.run_tiered.windows.x64.checked.mch |
3,003,996 |
-513 |
| coreclr_tests.run.windows.x64.checked.mch |
96,292,003 |
-2,042 |
| libraries.crossgen2.windows.x64.checked.mch |
39,442,298 |
-30,602 |
| libraries.pmi.windows.x64.checked.mch |
44,408,395 |
-10,790 |
| libraries_tests.run.windows.x64.Release.mch |
66,508,266 |
-18,425 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
97,022,110 |
-14,538 |
| realworld.run.windows.x64.checked.mch |
9,403,748 |
-2,802 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
4,587,697 |
-2,309 |
Example diffs
benchmarks.run.windows.x64.checked.mch
-25 (-33.78%) : 857.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
@@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-13 (-32.50%) : 2027.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx 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 (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 40
@@ -20,34 +18,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38]
mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-25 (-29.07%) : 3551.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -22,60 +21,41 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, rdx
- ;; size=17 bbWeight=1 PerfScore 3.75
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=14 bbWeight=1 PerfScore 3.50
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, qword ptr [rdx+0x38]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x70]
call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M60617_IG05
- ;; size=36 bbWeight=1 PerfScore 14.00
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M60617_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=40 bbWeight=1 PerfScore 16.00
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 86, prolog size 11, PerfScore 22.44, instruction count 29, allocated bytes for code 86 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 61, prolog size 11, PerfScore 21.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
+5 (+5.00%) : 15332.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
@@ -8,14 +8,11 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -30,42 +27,36 @@ G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor ebx, ebx
mov esi, dword ptr [(reloc)]
test esi, esi
- jle SHORT G_M3904_IG07
- mov rcx, 0xD1FFAB1E ; static handle
- mov rdi, gword ptr [rcx]
+ jle SHORT G_M3904_IG04
+ mov rdx, 0xD1FFAB1E ; static handle
+ mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle
- ;; size=35 bbWeight=1 PerfScore 6.00
-G_M3904_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M3904_IG06
- ;; size=11 bbWeight=4 PerfScore 7.00
-G_M3904_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M3904_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M3904_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle
+ ;; size=53 bbWeight=1 PerfScore 7.50
+G_M3904_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
inc ebx
cmp ebx, esi
jl SHORT G_M3904_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=4 PerfScore 18.00
+G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
add rsp, 40
pop rbx
@@ -75,7 +66,7 @@ G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 100, prolog size 8, PerfScore 37.25, instruction count 32, allocated bytes for code 100 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 33.00, instruction count 30, allocated bytes for code 105 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
; ============================================================
Unwind Info:
+5 (+5.00%) : 16996.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
@@ -8,14 +8,11 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -30,42 +27,36 @@ G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor ebx, ebx
mov esi, dword ptr [(reloc)]
test esi, esi
- jle SHORT G_M36328_IG07
- mov rcx, 0xD1FFAB1E ; static handle
- mov rdi, gword ptr [rcx]
+ jle SHORT G_M36328_IG04
+ mov rdx, 0xD1FFAB1E ; static handle
+ mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle
- ;; size=35 bbWeight=1 PerfScore 6.00
-G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M36328_IG06
- ;; size=11 bbWeight=4 PerfScore 7.00
-G_M36328_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M36328_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M36328_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle
+ ;; size=53 bbWeight=1 PerfScore 7.50
+G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
inc ebx
cmp ebx, esi
jl SHORT G_M36328_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=4 PerfScore 18.00
+G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
add rsp, 40
pop rbx
@@ -75,7 +66,7 @@ G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 100, prolog size 8, PerfScore 37.25, instruction count 32, allocated bytes for code 100 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 33.00, instruction count 30, allocated bytes for code 105 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
; ============================================================
Unwind Info:
+5 (+5.00%) : 27104.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
@@ -8,14 +8,11 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -30,42 +27,36 @@ G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
xor ebx, ebx
mov esi, dword ptr [(reloc)]
test esi, esi
- jle SHORT G_M896_IG07
- mov rcx, 0xD1FFAB1E ; static handle
- mov rdi, gword ptr [rcx]
+ jle SHORT G_M896_IG04
+ mov rdx, 0xD1FFAB1E ; static handle
+ mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle
- ;; size=35 bbWeight=1 PerfScore 6.00
-G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M896_IG06
- ;; size=11 bbWeight=4 PerfScore 7.00
-G_M896_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M896_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M896_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle
+ ;; size=53 bbWeight=1 PerfScore 7.50
+G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
inc ebx
cmp ebx, esi
jl SHORT G_M896_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=4 PerfScore 18.00
+G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
add rsp, 40
pop rbx
@@ -75,7 +66,7 @@ G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, e
ret
;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 100, prolog size 8, PerfScore 37.25, instruction count 32, allocated bytes for code 100 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 33.00, instruction count 30, allocated bytes for code 105 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-25 (-33.78%) : 15676.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
@@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
-18 (-17.82%) : 68075.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)
@@ -8,22 +8,19 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) byref -> rcx this single-def
-; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this single-def
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T10] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
-; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> rdx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref
-; V12 tmp10 [V12,T07] ( 2, 3 ) int -> rax "Inlining Arg"
-; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V15 cse0 [V15,T05] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> rdx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp7 [V09,T06] ( 2, 3 ) int -> rax "Inlining Arg"
+; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
+; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V12 cse0 [V12,T04] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -65,42 +62,25 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
mov rax, rcx
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M44215_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rbx+0x38]
mov rcx, qword ptr [rcx]
mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M44215_IG08
- ;; size=15 bbWeight=0.25 PerfScore 2.50
-G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M44215_IG08: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M44215_IG09: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=19 bbWeight=1 PerfScore 7.50
+G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 101, prolog size 10, PerfScore 22.44, instruction count 34, allocated bytes for code 101 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 83, prolog size 10, PerfScore 25.50, instruction count 28, allocated bytes for code 83 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
-13 (-10.83%) : 73727.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbolSystem.__Canon:System.__Canon (Tier1)
@@ -9,14 +9,12 @@
; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T02] ( 4, 3.50) long -> rsi single-def
-; V01 arg0 [V01,T01] ( 8, 5 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> rsi single-def
+; V01 arg0 [V01,T00] ( 8, 5 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 4, 2.25) ref -> rdx
-; V04 tmp2 [V04,T03] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T05] ( 3, 0 ) byref -> rdi single-def "non-inline candidate call"
-; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.ISymbol>
+; V03 tmp1 [V03,T02] ( 3, 2 ) ref -> rdx
+; V04 tmp2 [V04,T03] ( 3, 0 ) byref -> rdi single-def "non-inline candidate call"
+; V05 tmp3 [V05,T04] ( 2, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.ISymbol>
;
; Lcl frame size = 48
@@ -32,50 +30,37 @@ G_M28349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=18 bbWeight=1 PerfScore 4.75
G_M28349_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M28349_IG09
+ je SHORT G_M28349_IG06
cmp gword ptr [rbx+0x08], 0
- je SHORT G_M28349_IG10
+ je SHORT G_M28349_IG07
;; size=12 bbWeight=1 PerfScore 5.25
G_M28349_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M28349_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M28349_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M28349_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28349_IG05: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rsi+0x38]
mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx
- je SHORT G_M28349_IG07
- ;; size=12 bbWeight=0.50 PerfScore 4.00
-G_M28349_IG06: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M28349_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M28349_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M28349_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M28349_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28349_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
xor rdx, rdx
; gcrRegs +[rdx]
jmp SHORT G_M28349_IG04
;; size=4 bbWeight=0 PerfScore 0.00
-G_M28349_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M28349_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx] +[rbx]
lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
@@ -87,14 +72,14 @@ G_M28349_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
test rdi, rdi
- jne SHORT G_M28349_IG11
+ jne SHORT G_M28349_IG08
call [System.ThrowHelper:ThrowNullReferenceException()]
; gcrRegs -[rax rbx]
; byrRegs -[rdi]
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M28349_IG11: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M28349_IG08: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs +[rax rbx]
; byrRegs +[rdi]
mov rcx, rdi
@@ -110,7 +95,7 @@ G_M28349_IG11: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rd
jmp SHORT G_M28349_IG03
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 12, PerfScore 20.75, instruction count 42, allocated bytes for code 120 (MethodHash=bb679142) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
+; Total bytes of code 107, prolog size 12, PerfScore 20.00, instruction count 37, allocated bytes for code 107 (MethodHash=bb679142) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
; ============================================================
Unwind Info:
+28 (+1.73%) : 101228.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
@@ -11,43 +11,43 @@
;
; V00 this [V00,T00] ( 19, 16.98) ref -> rbx this class-hnd single-def <System.Reflection.Emit.DynamicMethod>
; V01 arg1 [V01,T10] ( 4, 4 ) ref -> rsi class-hnd single-def <System.String>
-; V02 arg2 [V02,T17] ( 3, 3 ) int -> r8 single-def
-; V03 arg3 [V03,T18] ( 3, 3 ) int -> r9 single-def
-; V04 arg4 [V04,T32] ( 5, 2.35) ref -> r14 class-hnd single-def <System.Type>
-; V05 arg5 [V05,T24] ( 3, 3.99) ref -> rbp class-hnd single-def <System.Type[]>
-; V06 arg6 [V06,T14] ( 8, 5.01) ref -> rdi class-hnd single-def <System.Type>
-; V07 arg7 [V07,T33] ( 5, 2.03) ref -> r15 class-hnd single-def <System.Reflection.Module>
-; V08 arg8 [V08,T42] ( 2, 1.00) ubyte -> [rsp+0xD0] single-def
-; V09 arg9 [V09,T41] ( 1, 1.01) ubyte -> r13 single-def
-; V10 loc0 [V10,T02] ( 7, 12.90) int -> [rsp+0x44]
-; V11 loc1 [V11,T07] ( 11, 9.50) ref -> r13 class-hnd exact <System.RuntimeType>
+; V02 arg2 [V02,T18] ( 3, 3 ) int -> r8 single-def
+; V03 arg3 [V03,T19] ( 3, 3 ) int -> r9 single-def
+; V04 arg4 [V04,T34] ( 5, 2.35) ref -> r14 class-hnd single-def <System.Type>
+; V05 arg5 [V05,T25] ( 3, 3.99) ref -> rbp class-hnd single-def <System.Type[]>
+; V06 arg6 [V06,T15] ( 8, 5.01) ref -> rdi class-hnd single-def <System.Type>
+; V07 arg7 [V07,T35] ( 5, 2.03) ref -> r15 class-hnd single-def <System.Reflection.Module>
+; V08 arg8 [V08,T44] ( 2, 1.00) ubyte -> [rsp+0xC0] single-def
+; V09 arg9 [V09,T43] ( 1, 1.01) ubyte -> r13 single-def
+; V10 loc0 [V10,T02] ( 7, 12.90) int -> [rsp+0x34]
+; V11 loc1 [V11,T06] ( 10, 9 ) ref -> rbp class-hnd exact single-def <System.RuntimeType>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T46] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp1 [V13,T48] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp4 [V16,T31] ( 4, 2.68) ref -> rdx
-; V17 tmp5 [V17,T27] ( 2, 2.00) int -> rcx
-; V18 tmp6 [V18,T40] ( 2, 0.02) int -> rcx
-; V19 tmp7 [V19,T28] ( 2, 2.00) int -> rcx
-; V20 tmp8 [V20,T36] ( 3, 2 ) ref -> r13
-;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V22 tmp10 [V22,T47] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V23 tmp11 [V23,T45] ( 2, 0.01) int -> rax
-;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V25 tmp13 [V25,T09] ( 6, 6.06) ref -> r14 class-hnd "spilling QMark2" <System.RuntimeType>
-; V26 tmp14 [V26,T48] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp15 [V27,T04] ( 3, 11.90) ref -> [rsp+0x28] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
-;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V29 tmp17 [V29,T01] ( 5, 14.87) ref -> rdx class-hnd "spilling QMark2" <System.RuntimeType>
-; V30 tmp18 [V30,T49] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V31 tmp19 [V31,T50] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V32 tmp20 [V32,T25] ( 3, 3.97) ref -> rdx "guarded devirt return temp"
-; V33 tmp21 [V33,T03] ( 5, 11.90) ref -> rcx "guarded devirt arg temp"
-;* V34 tmp22 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V35 tmp23 [V35,T39] ( 3, 1.35) ref -> r14 "guarded devirt return temp"
-;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V37 tmp25 [V37,T38] ( 3, 2.00) ref -> rdi "guarded devirt return temp"
-;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V16 tmp4 [V16,T33] ( 4, 2.68) ref -> rdx
+; V17 tmp5 [V17,T28] ( 2, 2.00) int -> rcx
+; V18 tmp6 [V18,T42] ( 2, 0.02) int -> rcx
+; V19 tmp7 [V19,T29] ( 2, 2.00) int -> rcx
+; V20 tmp8 [V20,T38] ( 3, 2 ) ref -> rbp
+; V21 tmp9 [V21,T49] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T47] ( 2, 0.01) int -> rax
+; V23 tmp11 [V23,T32] ( 2, 2.69) ref -> rdx class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V24 tmp12 [V24,T50] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp13 [V25,T04] ( 3, 11.90) ref -> [rsp+0x20] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V26 tmp14 [V26,T08] ( 2, 7.93) ref -> rdx class-hnd exact "Strict ordering of exceptions for Array store" <System.RuntimeType>
+; V27 tmp15 [V27,T51] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp16 [V28,T52] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V29 tmp17 [V29,T26] ( 3, 3.97) ref -> rcx "guarded devirt return temp"
+; V30 tmp18 [V30,T03] ( 5, 11.90) ref -> rcx "guarded devirt arg temp"
+;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V32 tmp20 [V32,T41] ( 3, 1.35) ref -> r14 "guarded devirt return temp"
+;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+; V34 tmp22 [V34,T40] ( 3, 2.00) ref -> rdi "guarded devirt return temp"
+;* V35 tmp23 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V36 tmp24 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V37 tmp25 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp26 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -58,54 +58,53 @@
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp36 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp37 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V52 tmp40 [V52,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V53 tmp41 [V53,T21] ( 4, 4 ) ubyte -> rax "Inline stloc first use temp"
-;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
-;* V55 tmp43 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
-;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
-;* V57 tmp45 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
-; V59 tmp47 [V59,T16] ( 12, 5 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type>
-; V60 tmp48 [V60,T19] ( 3, 5 ) int -> rdx "guarded devirt return temp"
-;* V61 tmp49 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V62 tmp50 [V62,T20] ( 3, 5 ) ubyte -> rdx "Inline return value spill temp"
-; V63 tmp51 [V63,T22] ( 4, 4 ) ubyte -> rax "Inline stloc first use temp"
-;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
-;* V65 tmp53 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V67 tmp55 [V67,T51] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V69 tmp57 [V69,T34] ( 4, 2 ) int -> rax
-; V70 tmp58 [V70,T35] ( 4, 2 ) ubyte -> r8 "Inline stloc first use temp"
-;* V71 tmp59 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V72 tmp60 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp61 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V74 tmp62 [V74,T23] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-;* V75 tmp63 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.m_type (fldOffset=0x0)" P-INDEP
-; V76 tmp64 [V76,T29] ( 5, 3 ) ref -> rcx single-def "field V56.m_type (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T37] ( 2, 2 ) ref -> rcx single-def "field V64.m_type (fldOffset=0x0)" P-INDEP
-;* V78 tmp66 [V78 ] ( 0, 0 ) long -> zero-ref "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V79 tmp67 [V79,T30] ( 3, 3 ) long -> rcx "field V71.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V80 tmp68 [V80,T05] ( 3, 11.90) ref -> rcx "arr expr"
-;* V81 tmp69 [V81,T26] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V82 tmp70 [V82,T52] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V83 tmp71 [V83,T53] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V84 tmp72 [V84,T44] ( 2, 0.04) ref -> rdx single-def "argument with side effect"
-; V85 tmp73 [V85,T54] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V86 tmp74 [V86,T55] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V87 tmp75 [V87,T56] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V88 tmp76 [V88,T57] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V89 cse0 [V89,T11] ( 3, 5.95) ref -> rcx "CSE - aggressive"
-; V90 cse1 [V90,T12] ( 3, 5.95) ref -> rcx "CSE - aggressive"
-; V91 cse2 [V91,T13] ( 2, 3.97) ref -> rcx "CSE - aggressive"
-; V92 cse3 [V92,T06] ( 12, 11.64) long -> [rsp+0x38] multi-def "CSE - aggressive"
-; V93 cse4 [V93,T15] ( 4, 5.00) int -> r12 "CSE - moderate"
-; V94 cse5 [V94,T08] ( 4, 7.93) long -> [rsp+0x30] spill-single-def "CSE - aggressive"
+;* V49 tmp37 [V49,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp38 [V50,T22] ( 4, 4 ) ubyte -> rax "Inline stloc first use temp"
+;* V51 tmp39 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <System.Type>
+;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.RuntimeTypeHandle>
+;* V53 tmp41 [V53 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.RuntimeTypeHandle>
+;* V54 tmp42 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
+;* V55 tmp43 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Type>
+; V56 tmp44 [V56,T17] ( 12, 5 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type>
+; V57 tmp45 [V57,T20] ( 3, 5 ) int -> rdx "guarded devirt return temp"
+;* V58 tmp46 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
+; V59 tmp47 [V59,T21] ( 3, 5 ) ubyte -> rdx "Inline return value spill temp"
+; V60 tmp48 [V60,T23] ( 4, 4 ) ubyte -> rax "Inline stloc first use temp"
+;* V61 tmp49 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
+;* V62 tmp50 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
+;* V63 tmp51 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V64 tmp52 [V64,T53] ( 3, 0 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;* V65 tmp53 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V66 tmp54 [V66,T36] ( 4, 2 ) int -> rax
+; V67 tmp55 [V67,T37] ( 4, 2 ) ubyte -> r8 "Inline stloc first use temp"
+;* V68 tmp56 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V69 tmp57 [V69 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V70 tmp58 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V71 tmp59 [V71,T24] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V72 tmp60 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V52.m_type (fldOffset=0x0)" P-INDEP
+; V73 tmp61 [V73,T30] ( 5, 3 ) ref -> rcx single-def "field V53.m_type (fldOffset=0x0)" P-INDEP
+; V74 tmp62 [V74,T39] ( 2, 2 ) ref -> rcx single-def "field V61.m_type (fldOffset=0x0)" P-INDEP
+;* V75 tmp63 [V75 ] ( 0, 0 ) long -> zero-ref "field V65.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V76 tmp64 [V76,T31] ( 3, 3 ) long -> rcx "field V68.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T05] ( 3, 11.90) ref -> rcx "arr expr"
+;* V78 tmp66 [V78,T27] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V79 tmp67 [V79,T54] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V80 tmp68 [V80,T55] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V81 tmp69 [V81,T46] ( 2, 0.04) ref -> rdx single-def "argument with side effect"
+; V82 tmp70 [V82,T56] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V83 tmp71 [V83,T57] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V84 tmp72 [V84,T58] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V85 tmp73 [V85,T59] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V86 cse0 [V86,T11] ( 3, 5.95) ref -> rcx "CSE - aggressive"
+; V87 cse1 [V87,T12] ( 3, 5.95) ref -> rcx "CSE - aggressive"
+; V88 cse2 [V88,T13] ( 2, 3.97) ref -> rcx "CSE - aggressive"
+; V89 cse3 [V89,T16] ( 4, 5.00) int -> r12 "CSE - aggressive"
+; V90 cse4 [V90,T07] ( 4, 7.93) long -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V91 rat0 [V91,T01] ( 5, 14.87) ref -> rdx class-hnd "replacement local" <System.RuntimeType>
+; V92 rat1 [V92,T14] ( 5, 5.05) ref -> r14 class-hnd "replacement local" <System.RuntimeType>
+; V93 rat2 [V93,T09] ( 5, 7.50) ref -> rbp class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -116,32 +115,32 @@ G_M32743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 72
+ sub rsp, 56
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- mov r14, gword ptr [rsp+0xB0]
+ mov r14, gword ptr [rsp+0xA0]
; gcrRegs +[r14]
- mov rbp, gword ptr [rsp+0xB8]
+ mov rbp, gword ptr [rsp+0xA8]
; gcrRegs +[rbp]
- mov rdi, gword ptr [rsp+0xC0]
+ mov rdi, gword ptr [rsp+0xB0]
; gcrRegs +[rdi]
- mov r15, gword ptr [rsp+0xC8]
+ mov r15, gword ptr [rsp+0xB8]
; gcrRegs +[r15]
- mov r13d, dword ptr [rsp+0xD8]
+ mov r13d, dword ptr [rsp+0xC8]
;; size=62 bbWeight=1 PerfScore 13.75
G_M32743_IG02: ; bbWeight=1, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M32743_IG46
+ je G_M32743_IG48
cmp r8d, 22
- jne G_M32743_IG47
+ jne G_M32743_IG49
cmp r9d, 1
- jne G_M32743_IG47
+ jne G_M32743_IG49
;; size=29 bbWeight=1 PerfScore 3.75
G_M32743_IG03: ; bbWeight=1.01, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
test rbp, rbp
- je G_M32743_IG51
+ je G_M32743_IG53
mov r12d, dword ptr [rbp+0x08]
mov edx, r12d
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -161,58 +160,59 @@ G_M32743_IG03: ; bbWeight=1.01, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15},
;; size=54 bbWeight=1.01 PerfScore 8.05
G_M32743_IG04: ; bbWeight=1.98, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
mov r8d, eax
- mov qword ptr [rsp+0x30], r8
+ mov qword ptr [rsp+0x28], r8
mov rcx, gword ptr [rbp+8*r8+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M32743_IG49
+ je G_M32743_IG51
mov r10, gword ptr [rbx+0x08]
; gcrRegs +[r10]
- mov gword ptr [rsp+0x28], r10
- ; GC ptr vars +{V27}
- mov r9, 0xD1FFAB1E ; System.RuntimeType
- cmp qword ptr [rcx], r9
- jne G_M32743_IG48
+ mov gword ptr [rsp+0x20], r10
+ ; GC ptr vars +{V25}
+ mov rdx, 0xD1FFAB1E ; System.RuntimeType
+ cmp qword ptr [rcx], rdx
+ jne G_M32743_IG50
+ ;; size=50 bbWeight=1.98 PerfScore 23.30
+G_M32743_IG05: ; bbWeight=1.98, gcVars=0000000000000010 {V25}, gcrefRegs=C4EA {rcx rbx rbp rsi rdi r10 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdx, rcx
; gcrRegs +[rdx]
- ;; size=53 bbWeight=1.98 PerfScore 23.80
...
+18 (+10.17%) : 71106.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,16 +10,14 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,300.01) int -> rbx
+; V01 loc0 [V01,T01] ( 4,300.01) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,456.39) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,253.55) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,760.64) ref -> rax class-hnd "spilling QMark2" <PerfLabTests.Foo[]>
-; V06 cse0 [V06,T04] ( 2,101.53) ref -> rbp hoist "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 3,101.44) ref -> rdi "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 3,100.02) int -> rsi "CSE - aggressive"
-; V09 rat0 [V09,T08] ( 3, 0.04) ref -> rdx "Spilling to split statement for tree"
-; V10 rat1 [V10,T07] ( 5, 0.07) ref -> rbp class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V03 cse0 [V03,T02] ( 2,101.53) ref -> rbp hoist "CSE - aggressive"
+; V04 cse1 [V04,T03] ( 4,101.44) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T04] ( 3,100.02) int -> rsi "CSE - aggressive"
+; V06 rat0 [V06,T06] ( 3, 0.04) ref -> rdx "Spilling to split statement for tree"
+; V07 rat1 [V07,T05] ( 5, 0.07) ref -> rbp class-hnd "replacement local" <PerfLabTests.Foo[]>
+; V08 rat2 [V08,T00] ( 5,709.93) ref -> rdx class-hnd "replacement local" <PerfLabTests.Foo[]>
;
; Lcl frame size = 40
@@ -33,7 +31,7 @@ G_M13964_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [(reloc)]
cmp ebx, esi
- jge SHORT G_M13964_IG11
+ jge G_M13964_IG12
mov rcx, 0xD1FFAB1E ; static handle
mov rdi, gword ptr [rcx]
; gcrRegs +[rdi]
@@ -43,7 +41,7 @@ G_M13964_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
test rbp, rbp
je SHORT G_M13964_IG05
- ;; size=34 bbWeight=0.01 PerfScore 0.07
+ ;; size=38 bbWeight=0.01 PerfScore 0.07
G_M13964_IG03: ; bbWeight=0.01, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; PerfLabTests.Foo[]
cmp qword ptr [rbp], rcx
@@ -61,41 +59,47 @@ G_M13964_IG04: ; bbWeight=0, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {},
G_M13964_IG05: ; bbWeight=101.52, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test rbp, rbp
- je SHORT G_M13964_IG10
+ je SHORT G_M13964_IG08
;; size=5 bbWeight=101.52 PerfScore 126.90
G_M13964_IG06: ; bbWeight=101.42, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M13964_IG09
- ;; size=11 bbWeight=101.42 PerfScore 177.48
-G_M13964_IG07: ; bbWeight=50.71, gcrefRegs=00A5 {rax rdx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ test rdx, rdx
+ jne SHORT G_M13964_IG10
+ ;; size=8 bbWeight=101.42 PerfScore 152.13
+G_M13964_IG07: ; bbWeight=101.42, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ ;; size=15 bbWeight=101.42 PerfScore 126.77
+G_M13964_IG08: ; bbWeight=100, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
+ inc ebx
+ cmp ebx, esi
+ jge SHORT G_M13964_IG12
+ ;; size=6 bbWeight=100 PerfScore 150.00
+G_M13964_IG09: ; bbWeight=100.76, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M13964_IG05
+ ;; size=2 bbWeight=100.76 PerfScore 201.52
+G_M13964_IG10: ; bbWeight=50.71, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; PerfLabTests.Foo[]
- cmp qword ptr [rax], rcx
- je SHORT G_M13964_IG09
+ cmp qword ptr [rdx], rcx
+ je SHORT G_M13964_IG07
;; size=15 bbWeight=50.71 PerfScore 215.52
-G_M13964_IG08: ; bbWeight=25.35, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M13964_IG11: ; bbWeight=0, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; PerfLabTests.Foo[]
call [CORINFO_HELP_CHKCASTARRAY]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=25.35 PerfScore 76.06
-G_M13964_IG09: ; bbWeight=101.42, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, rax
; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ;; size=18 bbWeight=101.42 PerfScore 152.13
-G_M13964_IG10: ; bbWeight=100, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
- inc ebx
- cmp ebx, esi
- jl SHORT G_M13964_IG05
- ;; size=6 bbWeight=100 PerfScore 150.00
-G_M13964_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbp rdi]
+ jmp SHORT G_M13964_IG07
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M13964_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rdx rbp rdi]
add rsp, 200
pop rbx
pop rsi
@@ -104,7 +108,7 @@ G_M13964_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 177, prolog size 35, PerfScore 898.24, instruction count 42, allocated bytes for code 177 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 195, prolog size 35, PerfScore 972.98, instruction count 45, allocated bytes for code 195 (MethodHash=acbac973) for method PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
+18 (+10.23%) : 93586.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
@@ -10,16 +10,14 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf2.CastingPerf>
-; V01 loc0 [V01,T02] ( 4,301.42) int -> rbx
+; V01 loc0 [V01,T01] ( 4,301.42) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3,451.67) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T03] ( 3,250.93) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5,752.78) ref -> rax class-hnd "spilling QMark2" <PerfLabTests.CastingPerf2.Foo>
-; V06 cse0 [V06,T05] ( 2,100.48) ref -> rbp hoist "CSE - aggressive"
-; V07 cse1 [V07,T06] ( 3,100.39) ref -> rdi "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.49) int -> rsi "CSE - aggressive"
-; V09 rat0 [V09,T08] ( 3, 0.04) ref -> rdx "Spilling to split statement for tree"
-; V10 rat1 [V10,T07] ( 5, 0.07) ref -> rbp class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V03 cse0 [V03,T03] ( 2,100.48) ref -> rbp hoist "CSE - aggressive"
+; V04 cse1 [V04,T04] ( 4,100.39) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.49) int -> rsi "CSE - aggressive"
+; V06 rat0 [V06,T06] ( 3, 0.04) ref -> rdx "Spilling to split statement for tree"
+; V07 rat1 [V07,T05] ( 5, 0.07) ref -> rbp class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
+; V08 rat2 [V08,T00] ( 5,702.60) ref -> rdx class-hnd "replacement local" <PerfLabTests.CastingPerf2.Foo>
;
; Lcl frame size = 40
@@ -33,7 +31,7 @@ G_M59156_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [(reloc)]
cmp ebx, esi
- jge SHORT G_M59156_IG11
+ jge G_M59156_IG11
mov rcx, 0xD1FFAB1E ; static handle
mov rdi, gword ptr [rcx]
; gcrRegs +[rdi]
@@ -43,7 +41,7 @@ G_M59156_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rbp]
test rbp, rbp
je SHORT G_M59156_IG05
- ;; size=34 bbWeight=0.01 PerfScore 0.07
+ ;; size=38 bbWeight=0.01 PerfScore 0.07
G_M59156_IG03: ; bbWeight=0.01, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; PerfLabTests.CastingPerf2.Foo
cmp qword ptr [rbp], rcx
@@ -61,41 +59,45 @@ G_M59156_IG04: ; bbWeight=0, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {},
G_M59156_IG05: ; bbWeight=100.47, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test rbp, rbp
- je SHORT G_M59156_IG10
+ je SHORT G_M59156_IG08
;; size=5 bbWeight=100.47 PerfScore 125.59
G_M59156_IG06: ; bbWeight=100.37, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M59156_IG09
- ;; size=11 bbWeight=100.37 PerfScore 175.65
-G_M59156_IG07: ; bbWeight=50.19, gcrefRegs=00A5 {rax rdx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ test rdx, rdx
+ jne SHORT G_M59156_IG09
+ ;; size=8 bbWeight=100.37 PerfScore 150.56
+G_M59156_IG07: ; bbWeight=100.37, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ ;; size=15 bbWeight=100.37 PerfScore 125.46
+G_M59156_IG08: ; bbWeight=100.47, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
+ inc ebx
+ cmp ebx, esi
+ jge SHORT G_M59156_IG11
+ jmp SHORT G_M59156_IG05
+ ;; size=8 bbWeight=100.47 PerfScore 351.65
+G_M59156_IG09: ; bbWeight=50.19, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; PerfLabTests.CastingPerf2.Foo
- cmp qword ptr [rax], rcx
- je SHORT G_M59156_IG09
+ cmp qword ptr [rdx], rcx
+ je SHORT G_M59156_IG07
;; size=15 bbWeight=50.19 PerfScore 213.29
-G_M59156_IG08: ; bbWeight=25.09, gcrefRegs=00A4 {rdx rbp rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M59156_IG10: ; bbWeight=0, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; PerfLabTests.CastingPerf2.Foo
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=25.09 PerfScore 75.28
-G_M59156_IG09: ; bbWeight=100.37, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, rax
; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ;; size=18 bbWeight=100.37 PerfScore 150.56
-G_M59156_IG10: ; bbWeight=100.47, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
- inc ebx
- cmp ebx, esi
- jl SHORT G_M59156_IG05
- ;; size=6 bbWeight=100.47 PerfScore 150.71
+ jmp SHORT G_M59156_IG07
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M59156_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbp rdi]
+ ; gcrRegs -[rax rdx rbp rdi]
add rsp, 200
pop rbx
pop rsi
@@ -104,7 +106,7 @@ G_M59156_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 35, PerfScore 891.22, instruction count 42, allocated bytes for code 176 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
+; Total bytes of code 194, prolog size 35, PerfScore 966.69, instruction count 45, allocated bytes for code 194 (MethodHash=3ff118eb) for method PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-25 (-33.78%) : 6486.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
@@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
-25 (-29.07%) : 22144.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -22,60 +21,41 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, rdx
- ;; size=17 bbWeight=1 PerfScore 3.75
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=14 bbWeight=1 PerfScore 3.50
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, qword ptr [rdx+0x38]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x70]
call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M60617_IG05
- ;; size=36 bbWeight=1 PerfScore 14.00
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M60617_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=40 bbWeight=1 PerfScore 16.00
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 86, prolog size 11, PerfScore 22.44, instruction count 29, allocated bytes for code 86 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 61, prolog size 11, PerfScore 21.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
-25 (-27.47%) : 19013.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)
@@ -8,14 +8,13 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Reflection.MemberInfo>
-; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MemberInfo>
+; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> rsi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T06] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V06 cse0 [V06,T05] ( 3, 3 ) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 48
@@ -25,52 +24,33 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- mov rsi, rdx
- ; gcrRegs +[rsi]
- mov edi, r8d
- ;; size=21 bbWeight=1 PerfScore 5.00
-G_M29548_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
+ mov esi, r8d
+ ;; size=18 bbWeight=1 PerfScore 4.75
+G_M29548_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdi, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rdi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- movzx r8, dil
- mov rcx, rsi
+ movzx r8, sil
+ mov rcx, rbx
; gcrRegs +[rcx]
call [System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute]
- ; gcrRegs -[rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M29548_IG05
- ;; size=36 bbWeight=1 PerfScore 10.25
-G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M29548_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rdi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M29548_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=40 bbWeight=1 PerfScore 12.25
+G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
@@ -78,7 +58,7 @@ G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 91, prolog size 12, PerfScore 20.44, instruction count 31, allocated bytes for code 91 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 66, prolog size 12, PerfScore 19.75, instruction count 23, allocated bytes for code 66 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================
Unwind Info:
+6 (+4.65%) : 21491.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -30,42 +27,36 @@ G_M34178_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M34178_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [(reloc)]
cmp ebx, esi
- jge SHORT G_M34178_IG07
- mov rcx, 0xD1FFAB1E ; static handle
- mov rdi, gword ptr [rcx]
+ jge SHORT G_M34178_IG04
+ mov rdx, 0xD1FFAB1E ; static handle
+ mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle
- ;; size=33 bbWeight=1 PerfScore 5.75
-G_M34178_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M34178_IG06
- ;; size=11 bbWeight=4 PerfScore 7.00
-G_M34178_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M34178_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M34178_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M34178_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle
+ ;; size=52 bbWeight=1 PerfScore 9.25
+G_M34178_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call [CORINFO_HELP_CHKCASTARRAY]
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
inc ebx
cmp ebx, esi
jl SHORT G_M34178_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M34178_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 26.00
+G_M34178_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
add rsp, 168
pop rbx
@@ -75,7 +66,7 @@ G_M34178_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 129, prolog size 35, PerfScore 39.00, instruction count 31, allocated bytes for code 129 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
+; Total bytes of code 135, prolog size 35, PerfScore 43.75, instruction count 29, allocated bytes for code 135 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
; ============================================================
Unwind Info:
+6 (+4.65%) : 29055.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -30,42 +27,36 @@ G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [(reloc)]
cmp ebx, esi
- jge SHORT G_M3904_IG07
- mov rcx, 0xD1FFAB1E ; static handle
- mov rdi, gword ptr [rcx]
+ jge SHORT G_M3904_IG04
+ mov rdx, 0xD1FFAB1E ; static handle
+ mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle
- ;; size=33 bbWeight=1 PerfScore 5.75
-G_M3904_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M3904_IG06
- ;; size=11 bbWeight=4 PerfScore 7.00
-G_M3904_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M3904_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3904_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle
+ ;; size=52 bbWeight=1 PerfScore 9.25
+G_M3904_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call [CORINFO_HELP_CHKCASTARRAY]
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
inc ebx
cmp ebx, esi
jl SHORT G_M3904_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 26.00
+G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
add rsp, 168
pop rbx
@@ -75,7 +66,7 @@ G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 129, prolog size 35, PerfScore 39.00, instruction count 31, allocated bytes for code 129 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
+; Total bytes of code 135, prolog size 35, PerfScore 43.75, instruction count 29, allocated bytes for code 135 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
; ============================================================
Unwind Info:
+6 (+4.65%) : 31480.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
@@ -9,14 +9,11 @@
; 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 -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive"
-; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
;
; Lcl frame size = 40
@@ -30,42 +27,36 @@ G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [(reloc)]
cmp ebx, esi
- jge SHORT G_M36328_IG07
- mov rcx, 0xD1FFAB1E ; static handle
- mov rdi, gword ptr [rcx]
+ jge SHORT G_M36328_IG04
+ mov rdx, 0xD1FFAB1E ; static handle
+ mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle
- ;; size=33 bbWeight=1 PerfScore 5.75
-G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M36328_IG06
- ;; size=11 bbWeight=4 PerfScore 7.00
-G_M36328_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M36328_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M36328_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle
+ ;; size=52 bbWeight=1 PerfScore 9.25
+G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call [CORINFO_HELP_CHKCASTARRAY]
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
inc ebx
cmp ebx, esi
jl SHORT G_M36328_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 26.00
+G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
add rsp, 168
pop rbx
@@ -75,7 +66,7 @@ G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret
;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 129, prolog size 35, PerfScore 39.00, instruction count 31, allocated bytes for code 129 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
+; Total bytes of code 135, prolog size 35, PerfScore 43.75, instruction count 29, allocated bytes for code 135 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-25 (-33.78%) : 306809.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
@@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
-22 (-32.35%) : 301159.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,12 +8,11 @@
; 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) long -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -21,50 +20,32 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rdx
- mov rbx, rdx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M51557_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M51557_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ mov rcx, qword ptr [rdx+0x38]
+ mov rbx, qword ptr [rcx]
+ mov rcx, rbx
mov rdx, r8
; gcrRegs +[rdx]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx r8] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M51557_IG05
- ;; size=23 bbWeight=1 PerfScore 6.75
-G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M51557_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbx
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M51557_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M51557_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=30 bbWeight=1 PerfScore 7.25
+G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 68, prolog size 10, PerfScore 13.44, instruction count 22, allocated bytes for code 68 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 46, prolog size 10, PerfScore 11.25, instruction count 15, allocated bytes for code 46 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
-13 (-31.71%) : 204589.dasm - Program:CastToArray(System.Object):int
@@ -6,44 +6,31 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <int[]>
;
; Lcl frame size = 40
G_M17219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
+ ;; size=4 bbWeight=1 PerfScore 0.25
+G_M17219_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
mov rdx, rcx
; gcrRegs +[rdx]
- ;; size=7 bbWeight=1 PerfScore 0.50
-G_M17219_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M17219_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17219_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; int[]
- cmp qword ptr [rax], rcx
- je SHORT G_M17219_IG05
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M17219_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rcx]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M17219_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M17219_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=19 bbWeight=1 PerfScore 1.75
+G_M17219_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 41, prolog size 4, PerfScore 4.69, instruction count 12, allocated bytes for code 41 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
+; Total bytes of code 28, prolog size 4, PerfScore 3.25, instruction count 7, allocated bytes for code 28 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
; ============================================================
Unwind Info:
+23 (+2.68%) : 242786.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort
@@ -13,49 +13,48 @@
; V02 arg2 [V02,T08] ( 7, 42 ) byref -> [rbp+0x20] EH-live single-def
; V03 arg3 [V03,T15] ( 5, 26 ) byref -> [rbp+0x28] EH-live single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V05 loc1 [V05,T31] ( 0, 0 ) ushort -> zero-ref EH-live single-def
-; V06 loc2 [V06,T29] ( 5, 17 ) double -> [rbp-0x28] do-not-enreg[Z] EH-live
+;* V05 loc1 [V05,T29] ( 0, 0 ) ushort -> zero-ref EH-live single-def
+; V06 loc2 [V06,T27] ( 5, 17 ) double -> [rbp-0x28] do-not-enreg[Z] EH-live
; V07 loc3 [V07,T20] ( 7, 7 ) ref -> rsi class-hnd single-def <<unknown class>>
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc5 [V09,T17] ( 3, 24 ) byte -> rcx
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11 ] ( 9, 9 ) struct (24) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
-; V12 tmp2 [V12,T21] ( 2, 4 ) ref -> rdx class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-; V13 tmp3 [V13,T25] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V14 tmp4 [V14,T22] ( 2, 4 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V15 tmp5 [V15,T00] ( 3,192 ) ref -> rdi class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V16 tmp6 [V16,T01] ( 3,192 ) ref -> rdi "inline UNBOX clone1"
-; V17 tmp7 [V17,T02] ( 3,192 ) ref -> rdi class-hnd exact "Single-def Box Helper" <System.Char>
-; V18 tmp8 [V18,T03] ( 3,192 ) ref -> rdi "inline UNBOX clone1"
-; V19 tmp9 [V19,T07] ( 3, 48 ) int -> rcx "dup spill"
-; V20 tmp10 [V20,T13] ( 2, 32 ) int -> r10 "impSpillLclRefs"
-; V21 tmp11 [V21,T14] ( 2, 32 ) int -> rcx "dup spill"
-;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
-;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V12 tmp2 [V12,T23] ( 2, 4 ) ref -> rdx class-hnd exact single-def "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+; V13 tmp3 [V13,T00] ( 3,192 ) ref -> rdi class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V14 tmp4 [V14,T01] ( 3,192 ) ref -> rdi "inline UNBOX clone1"
+; V15 tmp5 [V15,T02] ( 3,192 ) ref -> rdi class-hnd exact "Single-def Box Helper" <System.Char>
+; V16 tmp6 [V16,T03] ( 3,192 ) ref -> rdi "inline UNBOX clone1"
+; V17 tmp7 [V17,T07] ( 3, 48 ) int -> rcx "dup spill"
+; V18 tmp8 [V18,T13] ( 2, 32 ) int -> r10 "impSpillLclRefs"
+; V19 tmp9 [V19,T14] ( 2, 32 ) int -> rcx "dup spill"
+;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <AA`6[byte,ubyte,uint,uint,long,ubyte]>
+;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
+;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V28 tmp18 [V28,T30] ( 3, 0 ) ref -> rax class-hnd exact single-def "dup spill" <ushort[]>
-;* V29 tmp19 [V29 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V31 tmp21 [V31,T16] ( 4, 26 ) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
-;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-;* V33 tmp23 [V33,T19] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V34 tmp24 [V34,T26] ( 2, 4 ) long -> rcx "argument with side effect"
-; V35 tmp25 [V35,T27] ( 2, 4 ) long -> r8 "argument with side effect"
-; V36 tmp26 [V36,T23] ( 3, 6 ) int -> rcx "MD array shared temp"
-; V37 tmp27 [V37,T24] ( 3, 6 ) int -> rdx "MD array shared temp"
-; V38 PSPSym [V38,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T05] ( 4, 72 ) long -> rsi hoist multi-def "CSE - aggressive"
-; V40 cse1 [V40,T06] ( 5, 70 ) long -> rdi hoist multi-def "CSE - aggressive"
-; V41 cse2 [V41,T09] ( 5, 44 ) long -> rsi "CSE - aggressive"
-; V42 cse3 [V42,T10] ( 2, 36 ) long -> rbx hoist "CSE - aggressive"
-; V43 cse4 [V43,T11] ( 2, 36 ) long -> rbx hoist "CSE - aggressive"
-; V44 cse5 [V44,T12] ( 4, 32 ) int -> rcx "CSE - aggressive"
+; V26 tmp16 [V26,T28] ( 3, 0 ) ref -> rax class-hnd exact single-def "dup spill" <ushort[]>
+;* V27 tmp17 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
+;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+; V29 tmp19 [V29,T16] ( 4, 26 ) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
+;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
+;* V31 tmp21 [V31,T19] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V32 tmp22 [V32,T24] ( 2, 4 ) long -> rcx "argument with side effect"
+; V33 tmp23 [V33,T25] ( 2, 4 ) long -> r8 "argument with side effect"
+; V34 tmp24 [V34,T21] ( 3, 6 ) int -> rcx "MD array shared temp"
+; V35 tmp25 [V35,T22] ( 3, 6 ) int -> rax "MD array shared temp"
+; V36 PSPSym [V36,T26] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V37 cse0 [V37,T05] ( 4, 72 ) long -> rsi hoist multi-def "CSE - aggressive"
+; V38 cse1 [V38,T06] ( 5, 70 ) long -> rdi hoist multi-def "CSE - aggressive"
+; V39 cse2 [V39,T09] ( 5, 44 ) long -> rsi "CSE - aggressive"
+; V40 cse3 [V40,T10] ( 2, 36 ) long -> rbx hoist "CSE - aggressive"
+; V41 cse4 [V41,T11] ( 2, 36 ) long -> rbx hoist "CSE - aggressive"
+; V42 cse5 [V42,T12] ( 4, 32 ) int -> rcx "CSE - aggressive"
; TEMP_01 int -> [rbp-0x44]
+; TEMP_02 byref -> [rbp-0x50]
;
-; Lcl frame size = 80
+; Lcl frame size = 96
G_M19405_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
@@ -63,14 +62,14 @@ G_M19405_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
push rdi
push rsi
push rbx
- sub rsp, 80
+ sub rsp, 96
vzeroupper
- lea rbp, [rsp+0x70]
+ lea rbp, [rsp+0x80]
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rbp-0x40], xmm4
+ vmovdqu ymmword ptr [rbp-0x50], ymm4
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x50], rsp
+ mov qword ptr [rbp-0x60], rsp
mov qword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov bword ptr [rbp+0x20], r8
@@ -78,7 +77,7 @@ G_M19405_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov bword ptr [rbp+0x28], r9
; GC ptr vars +{V03}
mov ebx, edx
- ;; size=54 bbWeight=1 PerfScore 15.58
+ ;; size=57 bbWeight=1 PerfScore 15.58
G_M19405_IG02: ; bbWeight=1, gcVars=0000000000008100 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov dword ptr [rbp-0x40], 5
mov dword ptr [rbp-0x3C], 24
@@ -113,29 +112,34 @@ G_M19405_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
mov ecx, 26
sub ecx, dword ptr [rsi+0x18]
cmp ecx, dword ptr [rsi+0x10]
jae G_M19405_IG16
imul ecx, dword ptr [rsi+0x14]
- mov edx, 65
- sub edx, dword ptr [rsi+0x1C]
- cmp edx, dword ptr [rsi+0x14]
+ mov eax, 65
+ ; gcrRegs -[rax]
+ sub eax, dword ptr [rsi+0x1C]
+ cmp eax, dword ptr [rsi+0x14]
jae G_M19405_IG16
- add ecx, edx
+ add ecx, eax
lea rcx, bword ptr [rsi+8*rcx+0x20]
; byrRegs +[rcx]
+ mov bword ptr [rbp-0x50], rcx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ ; byrRegs -[rcx]
+ call CORINFO_HELP_CHKCASTARRAY
+ ; gcrRegs -[rdx rsi] +[rax]
+ ; gcr arg pop 0
+ mov rcx, bword ptr [rbp-0x50]
+ ; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rsi]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
nop
- ;; size=90 bbWeight=1 PerfScore 25.25
+ ;; size=98 bbWeight=1 PerfScore 27.25
G_M19405_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movsx rbx, word ptr [rbp+0x18]
;; size=5 bbWeight=8 PerfScore 24.00
@@ -290,7 +294,7 @@ G_M19405_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov qword ptr [rax+0x10], rcx
;; size=34 bbWeight=0 PerfScore 0.00
G_M19405_IG18: ; bbWeight=0, epilog, nogc, extend
- add rsp, 80
+ add rsp, 96
pop rbx
pop rsi
pop rdi
@@ -310,8 +314,8 @@ G_M19405_IG19: ; bbWeight=0, gcVars=0000000000008100 {V02 V03}, gcrefRegs
vzeroupper
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80]
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M19405_IG20: ; bbWeight=0, gcVars=0000000000008100 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M19405_IG09
;; size=7 bbWeight=0 PerfScore 0.00
@@ -334,8 +338,8 @@ G_M19405_IG22: ; bbWeight=0, gcVars=0000000000008100 {V02 V03}, gcrefRegs
vzeroupper
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80]
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M19405_IG23: ; bbWeight=0, gcVars=0000000000008100 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M19405_IG11
;; size=7 bbWeight=0 PerfScore 0.00
@@ -358,8 +362,8 @@ G_M19405_IG25: ; bbWeight=0, gcVars=0000000000008100 {V02 V03}, gcrefRegs
vzeroupper
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80]
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M19405_IG26: ; bbWeight=0, gcVars=0000000000008100 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M19405_IG15
;; size=7 bbWeight=0 PerfScore 0.00
@@ -382,8 +386,8 @@ G_M19405_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vzeroupper
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80]
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M19405_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V02 V03 V15}
lea rax, G_M19405_IG17
@@ -401,7 +405,7 @@ RWD00 dq 403B000000000000h ; 27
RWD08 dq 403E000000000000h ; 30
-; Total bytes of code 858, prolog size 54, PerfScore 1887.58, instruction count 232, allocated bytes for code 858 (MethodHash=5e5eb432) for method AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
+; Total bytes of code 881, prolog size 57, PerfScore 1889.58, instruction count 234, allocated bytes for code 881 (MethodHash=5e5eb432) for method AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
; ============================================================
Unwind Info:
@@ -414,7 +418,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+26 (+7.32%) : 457074.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b_100(System.Object):this (Tier1)
@@ -8,24 +8,24 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ThreadPoolTaskScheduler+<>c>
-; V01 arg1 [V01,T02] ( 6, 4.12) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T03] ( 6, 4 ) ref -> rbx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T11] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 13, 17.75) ref -> rsi class-hnd "spilling QMark2" <System.Threading.Tasks.Task>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V07 tmp5 [V07,T06] ( 4, 2.50) ubyte -> rdx "Inline return value spill temp"
-; V08 tmp6 [V08,T03] ( 4, 3 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V09 tmp7 [V09,T12] ( 3, 1 ) ubyte -> rdx "Inline return value spill temp"
-; V10 tmp8 [V10,T07] ( 3, 2.34) byref -> rdx single-def "Inlining Arg"
-;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V12 tmp10 [V12,T13] ( 2, 1 ) int -> rax "Inline stloc first use temp"
-; V13 tmp11 [V13,T09] ( 2, 2 ) byref -> rdx single-def "argument with side effect"
-; V14 cse0 [V14,T10] ( 3, 1.50) ref -> rdx "CSE - moderate"
-; V15 rat0 [V15,T08] ( 3, 2 ) byref -> rdx "TLS field access"
-; V16 rat1 [V16,T04] ( 3, 3 ) long -> rdx "TLS access"
-; V17 rat2 [V17,T05] ( 3, 3 ) long -> rdx "ThreadStaticBlockBase access"
-; V18 rat3 [V18,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <System.Threading.Tasks.Task>
+;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V04 tmp2 [V04,T00] ( 10, 15 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V06 tmp4 [V06,T07] ( 4, 2.50) ubyte -> rdx "Inline return value spill temp"
+; V07 tmp5 [V07,T04] ( 4, 3 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V08 tmp6 [V08,T12] ( 3, 1 ) ubyte -> rdx "Inline return value spill temp"
+; V09 tmp7 [V09,T08] ( 3, 2.34) byref -> rdx single-def "Inlining Arg"
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
+; V11 tmp9 [V11,T13] ( 2, 1 ) int -> rax "Inline stloc first use temp"
+; V12 tmp10 [V12,T10] ( 2, 2 ) byref -> rdx single-def "argument with side effect"
+; V13 cse0 [V13,T11] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V14 rat0 [V14,T09] ( 3, 2 ) byref -> rdx "TLS field access"
+; V15 rat1 [V15,T05] ( 3, 3 ) long -> rdx "TLS access"
+; V16 rat2 [V16,T06] ( 3, 3 ) long -> rdx "ThreadStaticBlockBase access"
+; V17 rat3 [V17,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V18 rat4 [V18,T02] ( 5, 7 ) ref -> rsi class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 40
@@ -45,7 +45,7 @@ G_M60851_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M60851_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
cmp qword ptr [rax], rcx
- jne G_M60851_IG23
+ jne G_M60851_IG22
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M60851_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
test rax, rax
@@ -65,41 +65,31 @@ G_M60851_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rsi, rbx
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M60851_IG09
+ je SHORT G_M60851_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M60851_IG07: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
- cmp qword ptr [rsi], rcx
- je SHORT G_M60851_IG09
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M60851_IG08: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rdx rbx] +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M60851_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+G_M60851_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rdx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ cmp qword ptr [rsi], rdx
+ jne G_M60851_IG23
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M60851_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
or dword ptr [rsi+0x34], 0x20000
mov rdx, gword ptr [rsi+0x28]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M60851_IG15
- ;; size=16 bbWeight=1 PerfScore 6.25
-G_M60851_IG10: ; bbWeight=0.50, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rdx+0x38], 1
je SHORT G_M60851_IG14
+ ;; size=16 bbWeight=1 PerfScore 6.25
+G_M60851_IG09: ; bbWeight=0.50, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x38], 1
+ je SHORT G_M60851_IG13
add rdx, 64
; gcrRegs -[rdx]
; byrRegs +[rdx]
cmp gword ptr [rdx], 0
- je SHORT G_M60851_IG12
+ je SHORT G_M60851_IG11
;; size=16 bbWeight=0.50 PerfScore 4.12
-G_M60851_IG11: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0004 {rdx}, byref, isz
+G_M60851_IG10: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0004 {rdx}, byref, isz
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
; byrRegs -[rdx]
@@ -107,22 +97,22 @@ G_M60851_IG11: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0004 {rdx
setne dl
; gcrRegs -[rdx]
movzx rdx, dl
- jmp SHORT G_M60851_IG13
+ jmp SHORT G_M60851_IG12
;; size=15 bbWeight=0.17 PerfScore 1.41
-G_M60851_IG12: ; bbWeight=0.33, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M60851_IG11: ; bbWeight=0.33, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
xor edx, edx
;; size=2 bbWeight=0.33 PerfScore 0.08
-G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M60851_IG16
+G_M60851_IG12: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M60851_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov edx, 1
- jmp SHORT G_M60851_IG16
+ jmp SHORT G_M60851_IG15
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M60851_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M60851_IG14: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
xor edx, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M60851_IG16: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG15: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test edx, edx
sete dl
movzx rdx, dl
@@ -132,9 +122,9 @@ G_M60851_IG16: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
setne cl
movzx rcx, cl
test edx, ecx
- je SHORT G_M60851_IG20
+ je SHORT G_M60851_IG19
;; size=33 bbWeight=1 PerfScore 6.50
-G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M60851_IG16: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rdx, qword ptr GS:[0x0058]
mov rdx, qword ptr [rdx]
cmp dword ptr [rdx+0xD8], 4
@@ -142,58 +132,58 @@ G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rdx, qword ptr [rdx+0xE0]
mov rdx, qword ptr [rdx+0x20]
test rdx, rdx
- je SHORT G_M60851_IG24
+ je G_M60851_IG24
mov rdx, bword ptr [rdx]
; byrRegs +[rdx]
add rdx, 16
- ;; size=48 bbWeight=0.50 PerfScore 7.25
-G_M60851_IG18: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0004 {rdx}, byref
+ ;; size=52 bbWeight=0.50 PerfScore 7.25
+G_M60851_IG17: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0004 {rdx}, byref
add rdx, 104
mov rcx, rsi
; gcrRegs +[rcx]
xor r8, r8
; gcrRegs +[r8]
;; size=10 bbWeight=0.50 PerfScore 0.38
-G_M60851_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M60851_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60851_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx r8]
; byrRegs -[rdx]
mov ecx, dword ptr [rsi+0x34]
and ecx, 0xD1FFAB1E
cmp ecx, 0xD1FFAB1E
- je SHORT G_M60851_IG22
+ je SHORT G_M60851_IG21
lea rcx, bword ptr [rsi+0x34]
; byrRegs +[rcx]
mov eax, dword ptr [rsi+0x34]
or eax, 0xD1FFAB1E
xchg dword ptr [rcx], eax
test eax, 0xD1FFAB1E
- jne SHORT G_M60851_IG22
+ jne SHORT G_M60851_IG21
mov rcx, rsi
; gcrRegs +[rcx]
; byrRegs -[rcx]
;; size=41 bbWeight=0.50 PerfScore 13.88
-G_M60851_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M60851_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M60851_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60851_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx rsi]
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M60851_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M60851_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -203,18 +193,30 @@ G_M60851_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcr arg pop 0
jmp G_M60851_IG04
;; size=23 bbWeight=0 PerfScore 0.00
-G_M60851_IG24: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rbx] +[rsi]
+G_M60851_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[rdx rbx] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ jmp G_M60851_IG08
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M60851_IG24: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov ecx, 4
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
; byrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; byrRegs +[rdx]
- jmp SHORT G_M60851_IG18
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M60851_IG17
+ ;; size=18 bbWeight=0 PerfScore 0.00
...
+47 (+335.71%) : 183559.dasm - T:TestEntryPoint():int (FullOpts)
@@ -11,24 +11,51 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+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 ) long -> 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,T01] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V04 rat0 [V04,T00] ( 5, 7.50) ref -> rax class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 40
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M32114_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
-G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M32114_IG05
+ ;; size=15 bbWeight=1 PerfScore 1.50
+G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [rax], rcx
+ je SHORT G_M32114_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M32114_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ je SHORT G_M32114_IG08
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
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
add rsp, 40
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M32114_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 14, prolog size 4, PerfScore 1.75, instruction count 4, allocated bytes for code 14 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 6.69, instruction count 16, allocated bytes for code 61 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-25 (-39.68%) : 7518.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)
@@ -8,61 +8,38 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rbx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rsi class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rcx "argument with side effect"
;
; Lcl frame size = 48
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- test rsi, rsi
- je SHORT G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rsi]
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
- cmp rdi, rax
- je SHORT G_M7606_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.56
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
mov rcx, rax
mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=15 bbWeight=0.12 PerfScore 0.47
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rsi
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=19 bbWeight=1 PerfScore 6.75
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
- pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 11.03, instruction count 23, allocated bytes for code 63 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 11.00, instruction count 12, allocated bytes for code 38 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -70,12 +47,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-25 (-39.68%) : 7995.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)
@@ -8,61 +8,38 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rbx class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.__Canon>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rsi class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rcx "argument with side effect"
;
; Lcl frame size = 48
G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.50
-G_M16223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- test rsi, rsi
- je SHORT G_M16223_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rsi]
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M16223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
- cmp rdi, rax
- je SHORT G_M16223_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.56
-G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
mov rcx, rax
mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=15 bbWeight=0.12 PerfScore 0.47
-G_M16223_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rsi
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=19 bbWeight=1 PerfScore 6.75
+G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
- pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 11.03, instruction count 23, allocated bytes for code 63 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 11.00, instruction count 12, allocated bytes for code 38 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -70,12 +47,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-25 (-39.68%) : 189924.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -8,62 +8,39 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rbx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx 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 (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rsi class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rcx "argument with side effect"
;
; Lcl frame size = 48
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, rbx
- ; gcrRegs +[rsi]
- test rsi, rsi
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rsi]
+ ;; size=13 bbWeight=1 PerfScore 2.50
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
- cmp rdi, rax
- je SHORT G_M8451_IG05
- ;; size=14 bbWeight=0.25 PerfScore 1.56
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
mov rcx, rax
mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=15 bbWeight=0.12 PerfScore 0.47
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rsi
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=19 bbWeight=1 PerfScore 6.75
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
- pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 11.03, instruction count 23, allocated bytes for code 63 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 11.00, instruction count 12, allocated bytes for code 38 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -71,12 +48,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-1 (-0.28%) : 153232.dasm - System.Net.Http.Headers.ObjectCollection`1[System.Canon]:Add(System.Canon):this (FullOpts)
@@ -8,42 +8,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 14, 9 ) ref -> rbx this class-hnd single-def <System.Net.Http.Headers.ObjectCollection`1[System.__Canon]>
+; V00 this [V00,T00] ( 12, 8 ) ref -> rbx this class-hnd single-def <System.Net.Http.Headers.ObjectCollection`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rsi class-hnd single-def <System.__Canon>
-;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
-; V03 loc1 [V03,T10] ( 4, 2 ) ref -> rdi class-hnd exact single-def <<unknown class>>
-;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V05 loc3 [V05,T04] ( 6, 3 ) int -> rdi
-; V06 loc4 [V06,T11] ( 4, 2 ) ref -> r14 class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T14] ( 3, 1.50) ref -> r14 class-hnd single-def <System.__Canon>
+; V03 loc1 [V03,T06] ( 4, 2 ) ref -> rbp class-hnd exact single-def <<unknown class>>
+; V04 loc2 [V04,T07] ( 4, 2 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V05 loc3 [V05,T02] ( 6, 3 ) int -> r14
+; V06 loc4 [V06,T08] ( 4, 2 ) ref -> rbp class-hnd exact single-def <<unknown class>>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T15] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T03] ( 5, 3.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T08] ( 3, 2.25) ref -> rdi single-def "CASTCLASS eval op1"
-; V12 tmp5 [V12,T09] ( 3, 2.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V13 tmp6 [V13,T02] ( 7, 6.25) ref -> rbp class-hnd "spilling QMark2" <<unknown class>>
-; V14 tmp7 [V14,T12] ( 2, 2 ) long -> rcx "argument with side effect"
-; V15 tmp8 [V15,T13] ( 2, 2 ) long -> rcx "argument with side effect"
-; V16 tmp9 [V16,T14] ( 2, 2 ) long -> rcx "argument with side effect"
-; V17 cse0 [V17,T06] ( 5, 2.50) long -> registers multi-def "CSE - moderate"
-; V18 cse1 [V18,T16] ( 3, 1.25) long -> rbp "CSE - conservative"
-; V19 cse2 [V19,T05] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+;* V08 tmp1 [V08,T17] ( 0, 0 ) long -> zero-ref "argument with side effect"
+; V09 tmp2 [V09,T04] ( 3, 3 ) long -> r14 "argument with side effect"
+; V10 tmp3 [V10,T10] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V11 tmp4 [V11,T11] ( 2, 2 ) long -> rcx "argument with side effect"
+; V12 tmp5 [V12,T12] ( 2, 2 ) long -> rcx "argument with side effect"
+; V13 tmp6 [V13,T13] ( 2, 2 ) long -> rcx "argument with side effect"
+; V14 cse0 [V14,T15] ( 2, 1 ) long -> r14 "CSE - moderate"
+; V15 cse1 [V15,T05] ( 5, 2.50) long -> rbp multi-def "CSE - aggressive"
+; V16 cse2 [V16,T16] ( 3, 1.50) int -> r15 "CSE - moderate"
+; V17 cse3 [V17,T03] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+; V18 cse4 [V18,T09] ( 4, 2 ) long -> rbp "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M5830_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 48
- mov qword ptr [rsp+0x28], rcx
+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=21 bbWeight=1 PerfScore 6.75
+ ;; size=23 bbWeight=1 PerfScore 7.75
G_M5830_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -71,61 +71,51 @@ G_M5830_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
mov dword ptr [rbx+0x10], 1
;; size=20 bbWeight=0.50 PerfScore 2.38
G_M5830_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M5830_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
- mov rcx, qword ptr [rbx]
+ mov rbp, qword ptr [rbx]
+ mov rcx, rbp
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
- mov rbp, rax
- mov rcx, rbp
+ mov r14, rax
+ mov rcx, r14
mov rdx, rdi
; gcrRegs +[rdx]
call [CORINFO_HELP_ISINSTANCEOFANY]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M5830_IG10
- ;; size=32 bbWeight=0.50 PerfScore 5.12
-G_M5830_IG06: ; bbWeight=0.25, gcrefRegs=4049 {rax rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rcx, rbp
- cmp qword ptr [r14], rcx
- je SHORT G_M5830_IG08
- ;; size=8 bbWeight=0.25 PerfScore 1.06
-G_M5830_IG07: ; bbWeight=0.12, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, r14
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- ;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rcx, qword ptr [rbx]
+ test r14, r14
+ je SHORT G_M5830_IG07
+ mov rcx, rbp
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, rax
- mov rcx, rdi
+ mov rbp, rax
+ mov rcx, rbp
mov edx, 4
call [CORINFO_HELP_NEWARR_1_DIRECT]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- mov rcx, rdi
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ mov rcx, rbp
; gcrRegs +[rcx]
mov r8, r14
; gcrRegs +[r8]
@@ -133,7 +123,7 @@ G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[rax rcx r8 r14]
; gcr arg pop 0
- mov rcx, rdi
+ mov rcx, rbp
; gcrRegs +[rcx]
mov r8, rsi
; gcrRegs +[r8]
@@ -143,50 +133,77 @@ G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
; gcr arg pop 0
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
- mov rdx, rdi
+ mov rdx, rbp
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rdx rdi]
+ ; gcrRegs -[rdx rbp]
; byrRegs -[rcx]
mov dword ptr [rbx+0x10], 2
- ;; size=80 bbWeight=0.50 PerfScore 10.62
-G_M5830_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ ;; size=127 bbWeight=0.50 PerfScore 16.75
+G_M5830_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M5830_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M5830_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
- mov rbp, rdi
- ; gcrRegs +[rbp]
- mov rcx, qword ptr [rbx]
+ mov rcx, rbp
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
- mov r14, rax
- mov rcx, r14
- cmp qword ptr [rbp], rcx
- je SHORT G_M5830_IG12
- ;; size=24 bbWeight=0.50 PerfScore 4.88
-G_M5830_IG11: ; bbWeight=0.12, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp]
+ mov rbp, rax
+ mov rcx, rbp
mov rdx, rdi
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx rdi] +[rax]
; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov r14d, dword ptr [rbx+0x10]
+ mov r15d, dword ptr [rdi+0x08]
+ cmp r15d, r14d
+ jbe SHORT G_M5830_IG08
+ movsxd rdx, r14d
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov r8, rsi
+ ; gcrRegs +[r8]
+ call [CORINFO_HELP_ARRADDR_ST]
+ ; gcrRegs -[rax rcx rsi rdi r8]
+ ; gcr arg pop 0
+ jmp SHORT G_M5830_IG09
+ ;; size=57 bbWeight=0.50 PerfScore 9.12
+G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi rdi]
+ mov rcx, rbp
+ add r15d, r15d
+ movsxd rdx, r15d
+ call [CORINFO_HELP_NEWARR_1_DIRECT]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- ;; size=12 bbWeight=0.12 PerfScore 0.44
-G_M5830_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov edi, dword ptr [rbx+0x10]
- cmp dword ptr [rbp+0x08], edi
- jbe SHORT G_M5830_IG13
- movsxd rdx, edi
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx]
+ mov r8d, r14d
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx rdx rdi]
+ ; gcr arg pop 0
+ lea rcx, bword ptr [rbx+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx]
+ call [CORINFO_HELP_ASSIGN_REF]
+ ; gcrRegs -[rdx]
...
+1 (+0.21%) : 142393.dasm - RailwaySharp.ErrorHandling.Result`2[System.Canon,System.Canon]:ToString():System.String:this (FullOpts)
@@ -9,45 +9,43 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6 ) ref -> rbx this class-hnd single-def <RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 10, 6.50) ref -> rbx this class-hnd single-def <RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Ok`2[System.__Canon,System.__Canon]>
-;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Bad`2[System.__Canon,System.__Canon]>
+;* V02 loc1 [V02,T26] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Ok`2[System.__Canon,System.__Canon]>
+;* V03 loc2 [V03,T27] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Bad`2[System.__Canon,System.__Canon]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 2.50) long -> rax "fgMakeTemp is creating a new local variable"
-;* V06 tmp2 [V06,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <RailwaySharp.ErrorHandling.Bad`2[System.__Canon,System.__Canon]>
-; V07 tmp3 [V07,T09] ( 2, 2 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.String>
-; V08 tmp4 [V08,T10] ( 2, 2 ) ref -> rbp class-hnd single-def "dup spill" <<unknown class>>
-; V09 tmp5 [V09,T11] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V10 tmp6 [V10,T25] ( 2, 1 ) ref -> r15 single-def
-;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp9 [V13,T07] ( 4, 2 ) ref -> rbp
-; V14 tmp10 [V14,T03] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp11 [V15,T12] ( 2, 2 ) ref -> rbp class-hnd exact single-def "finalizable newobj spill" <<unknown class>>
-; V16 tmp12 [V16,T06] ( 3, 2.50) long -> rax "fgMakeTemp is creating a new local variable"
-;* V17 tmp13 [V17,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <RailwaySharp.ErrorHandling.Ok`2[System.__Canon,System.__Canon]>
-; V18 tmp14 [V18,T13] ( 2, 2 ) ref -> rdi class-hnd single-def "non-inline candidate call" <System.__Canon>
-; V19 tmp15 [V19,T14] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt" <System.String>
-; V20 tmp16 [V20,T15] ( 2, 2 ) ref -> r15 class-hnd single-def "dup spill" <<unknown class>>
-; V21 tmp17 [V21,T16] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V22 tmp18 [V22,T27] ( 2, 1 ) ref -> r13 single-def
-;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp22 [V26,T08] ( 4, 2 ) ref -> r15
-; V27 tmp23 [V27,T04] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp24 [V28,T17] ( 2, 2 ) ref -> r15 class-hnd exact single-def "finalizable newobj spill" <<unknown class>>
+; V05 tmp1 [V05,T07] ( 2, 2 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.String>
+; V06 tmp2 [V06,T08] ( 2, 2 ) ref -> r14 class-hnd single-def "dup spill" <<unknown class>>
+; V07 tmp3 [V07,T09] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V08 tmp4 [V08,T24] ( 2, 1 ) ref -> r13 single-def
+;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
+; V11 tmp7 [V11,T05] ( 4, 2 ) ref -> r14
+; V12 tmp8 [V12,T03] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp9 [V13,T10] ( 2, 2 ) ref -> r14 class-hnd exact single-def "finalizable newobj spill" <<unknown class>>
+; V14 tmp10 [V14,T11] ( 2, 2 ) ref -> rdi class-hnd single-def "non-inline candidate call" <System.__Canon>
+; V15 tmp11 [V15,T12] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt" <System.String>
+; V16 tmp12 [V16,T13] ( 2, 2 ) ref -> r13 class-hnd single-def "dup spill" <<unknown class>>
+; V17 tmp13 [V17,T14] ( 2, 2 ) ref -> r14 class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V18 tmp14 [V18,T25] ( 2, 1 ) ref -> r12 single-def
+;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
+; V22 tmp18 [V22,T06] ( 4, 2 ) ref -> r13
+; V23 tmp19 [V23,T04] ( 4, 4 ) ref -> [rsp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V24 tmp20 [V24,T15] ( 2, 2 ) ref -> r13 class-hnd exact single-def "finalizable newobj spill" <<unknown class>>
+; V25 tmp21 [V25,T20] ( 2, 2 ) long -> rcx "argument with side effect"
+; V26 tmp22 [V26,T21] ( 2, 2 ) long -> rcx "argument with side effect"
+; V27 tmp23 [V27,T16] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V28 tmp24 [V28,T17] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V29 tmp25 [V29,T22] ( 2, 2 ) long -> rcx "argument with side effect"
-; V30 tmp26 [V30,T18] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V31 tmp27 [V31,T19] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V32 tmp28 [V32,T23] ( 2, 2 ) long -> rcx "argument with side effect"
-; V33 tmp29 [V33,T20] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V34 tmp30 [V34,T21] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V35 cse0 [V35,T02] ( 8, 4 ) byref -> r14 multi-def "CSE - aggressive"
-; V36 cse1 [V36,T01] ( 12, 6 ) long -> rsi multi-def "CSE - aggressive"
+; V30 tmp26 [V30,T23] ( 2, 2 ) long -> rcx "argument with side effect"
+; V31 tmp27 [V31,T18] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V32 tmp28 [V32,T19] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V33 cse0 [V33,T02] ( 8, 4 ) byref -> r15 multi-def "CSE - aggressive"
+; V34 cse1 [V34,T01] ( 10, 5 ) long -> rsi multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M40528_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -58,38 +56,32 @@ G_M40528_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
+ mov qword ptr [rsp+0x30], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 8.50
+ ;; size=24 bbWeight=1 PerfScore 9.50
G_M40528_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- jne G_M40528_IG08
+ jne G_M40528_IG06
;; size=10 bbWeight=1 PerfScore 4.00
G_M40528_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rbx]
mov rcx, rsi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
- cmp rsi, rax
- je SHORT G_M40528_IG05
- ;; size=17 bbWeight=0.50 PerfScore 3.25
-G_M40528_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rax
mov rdx, rbx
; gcrRegs +[rdx]
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M40528_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx] +[rax]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
@@ -102,10 +94,10 @@ G_M40528_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov rcx, rsi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax]
@@ -114,16 +106,120 @@ G_M40528_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE]
; byrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; byrRegs +[r14]
- mov r15, gword ptr [r14+0x08]
- ; gcrRegs +[r15]
+ mov r15, rax
+ ; byrRegs +[r15]
+ mov r13, gword ptr [r15+0x08]
+ ; gcrRegs +[r13]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov r12, gword ptr [rcx]
+ ; gcrRegs +[r12]
+ test r13, r13
+ jne SHORT G_M40528_IG04
+ mov r13, gword ptr [r15]
+ mov rcx, rsi
+ call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; byrRegs -[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ call [CORINFO_HELP_NEWFAST]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov gword ptr [rsp+0x28], rax
+ ; GC ptr vars +{V23}
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ call [CORINFO_HELP_READYTORUN_DELEGATE_CTOR]
+ ; gcrRegs -[rax rcx rdx r13]
+ ; gcr arg pop 0
+ lea rcx, bword ptr [r15+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
+ call [CORINFO_HELP_ASSIGN_REF]
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rcx r15]
+ mov r13, gword ptr [rsp+0x28]
+ ; gcrRegs +[r13]
+ ;; size=169 bbWeight=0.50 PerfScore 31.00
+G_M40528_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=70A8 {rbx rbp rdi r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V23}
+ mov rcx, rsi
+ call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; gcr arg pop 0
+ mov rcx, rax
+ mov rdx, r14
+ ; gcrRegs +[rdx]
+ mov r8, r13
+ ; gcrRegs +[r8]
+ call [<unknown method>]
+ ; gcrRegs -[rdx r8 r13-r14] +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx rbp]
+ ; gcr arg pop 0
+ mov r8, rax
+ ; gcrRegs +[r8]
+ mov rcx, r12
+ ; gcrRegs +[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ lea rax, [(reloc)] ; function address
+ ; gcrRegs -[rax]
+ ;; size=52 bbWeight=0.50 PerfScore 5.88
+G_M40528_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ tail.jmp [rax]<unknown method>
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
+G_M40528_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx rdx rdi r8 r12]
+ mov rsi, qword ptr [rbx]
+ mov rcx, rsi
+ call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; gcr arg pop 0
+ mov rcx, rax
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ call [CORINFO_HELP_CHKCASTANY]
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ call [<unknown method>]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rbp, gword ptr [rbx+0x10]
+ ; gcrRegs +[rbp]
+ mov rcx, rsi
+ call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; gcrRegs -[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE]
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ mov r15, rax
...
+1 (+0.29%) : 192887.dasm - Microsoft.Internal.Collections.WeakReferenceCollection1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List1[System.__Canon]:this (FullOpts)
@@ -8,22 +8,21 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
; V01 loc0 [V01,T11] ( 3, 4 ) ref -> rsi class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
; V02 loc1 [V02 ] ( 6, 11 ) struct (24) [rbp-0x50] 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 -> r14 class-hnd <System.WeakReference>
-;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V03 loc2 [V03,T05] ( 2, 8 ) ref -> r15 class-hnd <System.WeakReference>
+; V04 loc3 [V04,T04] ( 3, 10 ) ref -> rax class-hnd <System.__Canon>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
-; V07 tmp2 [V07,T01] ( 3, 17 ) ref -> rax "CASTCLASS eval op1"
-; V08 tmp3 [V08,T10] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V09 tmp4 [V09,T00] ( 5, 23 ) ref -> rdx class-hnd "spilling QMark2" <System.__Canon>
-; V10 tmp5 [V10,T03] ( 2, 16 ) long -> r13 "argument with side effect"
-; V11 tmp6 [V11,T02] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V12 PSPSym [V12,T12] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-; V13 cse0 [V13,T05] ( 3, 9 ) long -> r15 "CSE - aggressive"
-; V14 cse1 [V14,T04] ( 7, 11 ) long -> rdi multi-def "CSE - aggressive"
-; V15 cse2 [V15,T09] ( 3, 6 ) long -> rbx "CSE - aggressive"
+; V06 tmp1 [V06,T09] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;* V07 tmp2 [V07,T06] ( 0, 0 ) long -> zero-ref "argument with side effect"
+; V08 tmp3 [V08,T01] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V09 tmp4 [V09,T00] ( 3, 24 ) long -> r13 "argument with side effect"
+; V10 tmp5 [V10,T02] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V11 PSPSym [V11,T12] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T10] ( 1, 1 ) long -> r14 hoist "CSE - aggressive"
+; V13 cse1 [V13,T03] ( 7, 11 ) long -> rdi multi-def "CSE - aggressive"
+; V14 cse2 [V14,T07] ( 4, 7 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 80
@@ -46,7 +45,7 @@ G_M63535_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
;; size=47 bbWeight=1 PerfScore 14.33
-G_M63535_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M63535_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
mov rbx, qword ptr [rcx]
mov rcx, rbx
@@ -82,28 +81,31 @@ G_M63535_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcr arg pop 0
test eax, eax
- je SHORT G_M63535_IG09
- ;; size=24 bbWeight=1 PerfScore 7.00
+ je SHORT G_M63535_IG07
+ mov rcx, rbx
+ call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; gcr arg pop 0
+ mov r14, rax
+ ;; size=36 bbWeight=1 PerfScore 10.50
G_M63535_IG04: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbp-0x50]
mov rdx, rdi
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
+ mov r15, rax
+ ; gcrRegs +[r15]
mov rcx, rbx
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcrRegs -[rax]
; gcr arg pop 0
- mov r15, rax
- mov r13, r15
- mov rcx, r14
+ mov r13, rax
+ mov rcx, r15
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx r14] +[rax]
+ ; gcrRegs -[rcx r15] +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
@@ -113,34 +115,24 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- test rdx, rdx
- je SHORT G_M63535_IG08
- ;; size=66 bbWeight=4 PerfScore 78.00
-G_M63535_IG05: ; bbWeight=1, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, r15
- cmp qword ptr [rdx], rcx
- je SHORT G_M63535_IG07
- ;; size=8 bbWeight=1 PerfScore 4.25
-G_M63535_IG06: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
- mov rdx, rax
- ; gcrRegs +[rdx]
+ mov rcx, r13
call [CORINFO_HELP_CHKCASTANY]
; gcrRegs -[rdx]
; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M63535_IG07: ; bbWeight=2, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ test rax, rax
+ je SHORT G_M63535_IG06
+ ;; size=72 bbWeight=4 PerfScore 90.00
+G_M63535_IG05: ; bbWeight=2, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
+ mov rdx, rax
+ ; gcrRegs +[rdx]
lea r11, [(reloc)] ; function address
call [r11]<unknown method>
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=13 bbWeight=2 PerfScore 7.50
-G_M63535_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=2 PerfScore 8.00
+G_M63535_IG06: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbp-0x50]
mov rdx, rdi
call [<unknown method>]
@@ -148,7 +140,7 @@ G_M63535_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
test eax, eax
jne SHORT G_M63535_IG04
;; size=17 bbWeight=4 PerfScore 20.00
-G_M63535_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M63535_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x50]
mov rdx, rdi
call [<unknown method>]
@@ -156,7 +148,7 @@ G_M63535_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
mov rax, rsi
; gcrRegs +[rax]
;; size=16 bbWeight=1 PerfScore 4.00
-G_M63535_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M63535_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 80
pop rbx
pop rsi
@@ -167,7 +159,7 @@ G_M63535_IG10: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.75
-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 -[rax rsi]
push rbp
push r15
@@ -181,7 +173,7 @@ G_M63535_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x80]
;; size=30 bbWeight=0 PerfScore 0.00
-G_M63535_IG12: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63535_IG10: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rcx, [rbp-0x50]
mov rdi, qword ptr [(reloc)] ; System.Collections.Generic.List`1+Enumerator[System.WeakReference]
mov rdx, rdi
@@ -189,7 +181,7 @@ G_M63535_IG12: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=000
; gcr arg pop 0
nop
;; size=21 bbWeight=0 PerfScore 0.00
-G_M63535_IG13: ; bbWeight=0, funclet epilog, nogc, extend
+G_M63535_IG11: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
@@ -201,7 +193,7 @@ G_M63535_IG13: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 47, PerfScore 163.83, instruction count 107, allocated bytes for code 342 (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 343, prolog size 47, PerfScore 173.83, instruction count 106, allocated bytes for code 343 (MethodHash=4d8107d0) for method Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -242,4 +234,4 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** 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.windows.x64.checked.mch
-13 (-32.50%) : 15207.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 40
@@ -19,34 +17,21 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M7606_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38]
mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx
- je SHORT G_M7606_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M7606_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-13 (-32.50%) : 246352.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx 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 (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 40
@@ -20,34 +18,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38]
mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-20 (-31.25%) : 149502.dasm - Roslyn.Utilities.EnumUtilities:GetValuesubyte:ubyte
@@ -9,53 +9,33 @@
; Final local variable assignments
;
; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T01] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V02 tmp2 [V02,T02] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V03 tmp3 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <ubyte[]>
+; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 40
G_M58003_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
-G_M58003_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M58003_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [System.RuntimeType:GetEnumValues():System.Array:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- jne SHORT G_M58003_IG05
- ;; size=24 bbWeight=1 PerfScore 4.75
-G_M58003_IG03: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M58003_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- ret
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M58003_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rcx, 0xD1FFAB1E ; ubyte[]
- cmp qword ptr [r8], rcx
- je SHORT G_M58003_IG03
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M58003_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- jmp SHORT G_M58003_IG03
- ;; size=13 bbWeight=0.12 PerfScore 0.44
+ nop
+ ;; size=35 bbWeight=1 PerfScore 5.00
+G_M58003_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 64, prolog size 4, PerfScore 8.00, instruction count 16, allocated bytes for code 64 (MethodHash=01371d6c) for method Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 6.50, instruction count 9, allocated bytes for code 44 (MethodHash=01371d6c) for method Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
; ============================================================
Unwind Info:
+11 (+4.68%) : 207677.dasm - System.Collections.Immutable.ImmutableArray1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan1[System.__Canon]):this (FullOpts)
@@ -8,35 +8,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 5, 5 ) ref -> rsi this class-hnd single-def <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V01 TypeCtx [V01,T08] ( 7, 5.56) long -> rbx single-def
-; V02 arg1 [V02,T06] ( 4, 8 ) byref -> r8 ld-addr-op single-def
-; V03 loc0 [V03,T19] ( 2, 2 ) int -> r14
-; V04 loc1 [V04 ] ( 3, 9 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.__Canon]>
-; V05 loc2 [V05,T01] ( 6, 21 ) int -> rsi
+; V00 this [V00,T06] ( 5, 5 ) ref -> rsi this class-hnd single-def <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+; V01 TypeCtx [V01,T05] ( 7, 5.56) long -> rbx single-def
+; V02 arg1 [V02,T03] ( 4, 8 ) byref -> r8 ld-addr-op single-def
+; V03 loc0 [V03,T16] ( 2, 2 ) int -> r14
+; V04 loc1 [V04 ] ( 3, 9 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.__Canon]>
+; V05 loc2 [V05,T00] ( 6, 21 ) int -> rsi
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T05] ( 3, 11 ) long -> rcx "spilling helperCall"
-; V09 tmp3 [V09,T03] ( 2, 16 ) byref -> rbx "bubbling QMark2"
-; V10 tmp4 [V10,T02] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1"
-;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V12 tmp6 [V12,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
-; V13 tmp7 [V13,T12] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp8 [V14,T07] ( 5, 8 ) int -> rbp "field V02._length (fldOffset=0x8)" P-INDEP
-; V15 tmp9 [V15 ] ( 2, 5 ) byref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V04._reference (fldOffset=0x0)" P-DEP
-; V16 tmp10 [V16 ] ( 2, 5 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[System.__Canon]>
-; V18 tmp12 [V18,T17] ( 2, 4 ) long -> rdx "argument with side effect"
-; V19 cse0 [V19,T13] ( 2, 5 ) long -> r14 hoist "CSE - aggressive"
-; V20 cse1 [V20,T18] ( 3, 3 ) int -> rdx "CSE - moderate"
-; V21 cse2 [V21,T04] ( 3, 12 ) long -> rax "CSE - aggressive"
-; V22 rat0 [V22,T15] ( 3, 4 ) long -> rdx "runtime lookup"
-; V23 rat1 [V23,T10] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T16] ( 3, 4 ) long -> r14 "runtime lookup"
-; V25 rat3 [V25,T11] ( 3, 5.60) long -> rcx "spilling expr"
-; V26 rat4 [V26,T14] ( 3, 4.48) long -> r14 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T01] ( 2, 16 ) long -> [rsp+0x28] spill-single-def "spilling helperCall"
+; V09 tmp3 [V09,T09] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp4 [V10,T04] ( 5, 8 ) int -> rbp "field V02._length (fldOffset=0x8)" P-INDEP
+; V11 tmp5 [V11 ] ( 2, 5 ) byref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V04._reference (fldOffset=0x0)" P-DEP
+; V12 tmp6 [V12 ] ( 2, 5 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
+;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[System.__Canon]>
+; V14 tmp8 [V14,T14] ( 2, 4 ) long -> rdx "argument with side effect"
+; V15 cse0 [V15,T10] ( 2, 5 ) long -> r14 hoist "CSE - aggressive"
+; V16 cse1 [V16,T15] ( 3, 3 ) int -> rdx "CSE - aggressive"
+; V17 cse2 [V17,T02] ( 3, 12 ) long -> rax "CSE - aggressive"
+; V18 rat0 [V18,T12] ( 3, 4 ) long -> rdx "runtime lookup"
+; V19 rat1 [V19,T07] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V20 rat2 [V20,T13] ( 3, 4 ) long -> r14 "runtime lookup"
+; V21 rat3 [V21,T08] ( 3, 5.60) long -> rcx "spilling expr"
+; V22 rat4 [V22,T11] ( 3, 4.48) long -> r14 "fgMakeTemp is creating a new local variable"
+; TEMP_01 byref -> [rsp+0x40]
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M27839_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r14
@@ -44,14 +41,16 @@ G_M27839_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 64
+ sub rsp, 80
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x38], rdx
+ mov qword ptr [rsp+0x40], rax
+ mov qword ptr [rsp+0x48], rdx
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
- ;; size=28 bbWeight=1 PerfScore 8.00
+ ;; size=38 bbWeight=1 PerfScore 10.33
G_M27839_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0100 {r8}, byref, isz
; byrRegs +[r8]
mov rdi, bword ptr [r8]
@@ -85,14 +84,14 @@ G_M27839_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi},
mov dword ptr [rsp+0x20], ebp
mov r8, gword ptr [rsi+0x08]
; gcrRegs +[r8]
- lea rcx, [rsp+0x28]
+ lea rcx, [rsp+0x30]
mov r9d, r14d
call [System.Span`1[System.__Canon]:.ctor(System.__Canon[],int,int):this]
; gcrRegs -[rsi r8]
; gcr arg pop 0
xor esi, esi
test ebp, ebp
- jle SHORT G_M27839_IG13
+ jle SHORT G_M27839_IG10
mov rcx, qword ptr [rbx+0x38]
cmp qword ptr [rcx+0x08], 24
jle SHORT G_M27839_IG08
@@ -113,47 +112,37 @@ G_M27839_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0080 {rdi},
mov r14, rax
;; size=21 bbWeight=0.36 PerfScore 0.63
G_M27839_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov rcx, r14
- cmp esi, dword ptr [rsp+0x30]
- jae SHORT G_M27839_IG14
- mov rdx, bword ptr [rsp+0x28]
+ mov qword ptr [rsp+0x28], r14
+ cmp esi, dword ptr [rsp+0x38]
+ jae SHORT G_M27839_IG11
+ mov rdx, bword ptr [rsp+0x30]
; byrRegs +[rdx]
mov eax, esi
- lea rbx, bword ptr [rdx+8*rax]
- ; byrRegs +[rbx]
+ lea rcx, bword ptr [rdx+8*rax]
+ ; byrRegs +[rcx]
+ mov bword ptr [rsp+0x40], rcx
mov rdx, gword ptr [rdi+8*rax]
; gcrRegs +[rdx]
; byrRegs -[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M27839_IG12
- ;; size=32 bbWeight=4 PerfScore 34.00
-G_M27839_IG10: ; bbWeight=1, gcrefRegs=0005 {rax rdx}, byrefRegs=0088 {rbx rdi}, byref, isz
- cmp qword ptr [rax], rcx
- je SHORT G_M27839_IG12
- ;; size=5 bbWeight=1 PerfScore 4.00
-G_M27839_IG11: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0088 {rbx rdi}, byref
- ; gcrRegs -[rax]
+ mov rcx, qword ptr [rsp+0x28]
+ ; byrRegs -[rcx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M27839_IG12: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov rcx, rbx
+ mov rcx, bword ptr [rsp+0x40]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rdx]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx]
inc esi
cmp esi, ebp
jl SHORT G_M27839_IG09
- ;; size=17 bbWeight=4 PerfScore 12.00
-G_M27839_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 58.00
+G_M27839_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi]
- add rsp, 64
+ add rsp, 80
pop rbx
pop rbp
pop rsi
@@ -161,13 +150,13 @@ G_M27839_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M27839_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M27839_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 235, prolog size 28, PerfScore 97.96, instruction count 74, allocated bytes for code 235 (MethodHash=475d9340) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
+; Total bytes of code 246, prolog size 38, PerfScore 107.79, instruction count 73, allocated bytes for code 246 (MethodHash=475d9340) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -180,7 +169,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+5 (+4.95%) : 219651.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> rcx this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> rdx class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rdx class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.82) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.27) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1.00) ubyte -> rax "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.10) byref -> rcx single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.82) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.27) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1.00) ubyte -> rax "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.10) byref -> rcx single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 40
@@ -48,12 +47,14 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
+ test rdx, rdx
+ je SHORT G_M57556_IG04
mov r8, gword ptr [rcx+0x08]
; gcrRegs +[r8]
mov rdx, gword ptr [rdx+0x08]
cmp r8, rdx
je SHORT G_M57556_IG14
- ;; size=13 bbWeight=0.50 PerfScore 2.62
+ ;; size=18 bbWeight=0.50 PerfScore 3.25
G_M57556_IG07: ; bbWeight=0.43, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
test r8, r8
@@ -99,7 +100,7 @@ G_M57556_IG14: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=000
jmp SHORT G_M57556_IG12
;; size=7 bbWeight=0.07 PerfScore 0.15
-; Total bytes of code 101, prolog size 4, PerfScore 13.56, instruction count 32, allocated bytes for code 101 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 106, prolog size 4, PerfScore 14.18, instruction count 34, allocated bytes for code 106 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+5 (+4.95%) : 218052.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
@@ -10,18 +10,17 @@
;
; V00 this [V00,T02] ( 3, 2.50) ref -> rcx this class-hnd single-def <System.Data.Common.DbConnectionPoolKey>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T06] ( 2, 1 ) ref -> rdx class-hnd exact <System.Data.Common.DbConnectionPoolKey>
+; V02 loc0 [V02,T04] ( 3, 1.50) ref -> rdx class-hnd exact single-def <System.Data.Common.DbConnectionPoolKey>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Data.Common.DbConnectionPoolKey>
-; V05 tmp2 [V05,T01] ( 6, 4.82) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp3 [V06,T03] ( 5, 4.27) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T05] ( 4, 1.00) ubyte -> rax "Inline return value spill temp"
-; V08 tmp5 [V08,T04] ( 2, 1.10) byref -> rcx single-def "impAppendStmt"
+; V04 tmp1 [V04,T01] ( 6, 4.82) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.27) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp3 [V06,T06] ( 4, 1.00) ubyte -> rax "Inline return value spill temp"
+; V07 tmp4 [V07,T05] ( 2, 1.10) byref -> rcx single-def "impAppendStmt"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 40
@@ -48,12 +47,14 @@ G_M57556_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M57556_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
+ test rdx, rdx
+ je SHORT G_M57556_IG04
mov r8, gword ptr [rcx+0x08]
; gcrRegs +[r8]
mov rdx, gword ptr [rdx+0x08]
cmp r8, rdx
je SHORT G_M57556_IG14
- ;; size=13 bbWeight=0.50 PerfScore 2.62
+ ;; size=18 bbWeight=0.50 PerfScore 3.25
G_M57556_IG07: ; bbWeight=0.43, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
test r8, r8
@@ -99,7 +100,7 @@ G_M57556_IG14: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=000
jmp SHORT G_M57556_IG12
;; size=7 bbWeight=0.07 PerfScore 0.15
-; Total bytes of code 101, prolog size 4, PerfScore 13.56, instruction count 32, allocated bytes for code 101 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 106, prolog size 4, PerfScore 14.18, instruction count 34, allocated bytes for code 106 (MethodHash=7a9f1f2b) for method System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-35 (-36.08%) : 533662.dasm - Moq.Mock`1[System.Canon]:get_Object():System.Canon:this (Tier1)
@@ -8,82 +8,56 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 3.75) ref -> rbx this class-hnd single-def <Moq.Mock`1[System.__Canon]>
+; V00 this [V00,T00] ( 5, 3.50) ref -> rcx this class-hnd single-def <Moq.Mock`1[System.__Canon]>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V05 tmp4 [V05,T02] ( 4, 1.62) ref -> rax "guarded devirt return temp"
-;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]>
+; V02 tmp1 [V02,T02] ( 3, 1.50) ref -> rax "guarded devirt return temp"
+;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]>
+; V04 cse0 [V04,T01] ( 4, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M6043_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 48
- mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M6043_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; Moq.Mock`1[System.IO.Stream]
- cmp qword ptr [rbx], rcx
- jne SHORT G_M6043_IG09
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M6043_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rcx, rbx
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M6043_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
+ mov rbx, qword ptr [rcx]
+ mov rax, 0xD1FFAB1E ; Moq.Mock`1[System.IO.Stream]
+ cmp rbx, rax
+ jne SHORT G_M6043_IG06
+ ;; size=18 bbWeight=1 PerfScore 3.50
+G_M6043_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
call [Moq.Mock`1[System.__Canon]:OnGetObject():System.Object:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M6043_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M6043_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M6043_IG05: ; bbWeight=0.25, gcrefRegs=0109 {rax rbx r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x38]
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M6043_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ mov rcx, qword ptr [rbx+0x38]
mov rcx, qword ptr [rcx]
mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M6043_IG07
- ;; size=18 bbWeight=0.25 PerfScore 3.00
-G_M6043_IG06: ; bbWeight=0.12, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M6043_IG07: ; bbWeight=1, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M6043_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+ nop
+ ;; size=19 bbWeight=1 PerfScore 7.50
+G_M6043_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-G_M6043_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax r8]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x58]
+G_M6043_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, qword ptr [rbx+0x58]
call [rax]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
jmp SHORT G_M6043_IG04
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 97, prolog size 10, PerfScore 15.06, instruction count 30, allocated bytes for code 97 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
+; Total bytes of code 62, prolog size 5, PerfScore 15.50, instruction count 19, allocated bytes for code 62 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
@@ -96,5 +70,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-25 (-33.78%) : 3564.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
@@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================
Unwind Info:
-18 (-32.73%) : 60015.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)
@@ -7,57 +7,36 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> rdx single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> rax this single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 40
G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
mov qword ptr [rsp+0x20], rdx
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- ; byrRegs +[rcx]
- mov rax, gword ptr [rcx]
- ; gcrRegs +[rax]
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M64707_IG05
- ;; size=11 bbWeight=1 PerfScore 3.50
-G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rcx]
+ mov rax, rcx
+ ; byrRegs +[rax]
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
mov rcx, qword ptr [rdx+0x38]
mov rcx, qword ptr [rcx]
mov rcx, qword ptr [rcx+0x08]
- cmp qword ptr [r8], rcx
- je SHORT G_M64707_IG05
- ;; size=16 bbWeight=0.25 PerfScore 2.50
-G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
- mov rdx, rax
+ mov rdx, gword ptr [rax]
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rdx] +[rax]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M64707_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M64707_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=20 bbWeight=1 PerfScore 9.25
+G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 55, prolog size 9, PerfScore 8.94, instruction count 17, allocated bytes for code 55 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 37, prolog size 9, PerfScore 12.00, instruction count 11, allocated bytes for code 37 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
+15 (+7.21%) : 429068.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
@@ -10,31 +10,31 @@
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Xml.Schema.XsdBuilder>
-; V01 arg1 [V01,T04] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T09] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 6, 9.50) ref -> rdi class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchemaKeyref>
-; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Xml.XmlQualifiedName>
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T03] ( 5, 5 ) ref -> rdx
-; V09 tmp7 [V09,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V10 cse0 [V10,T08] ( 3, 3 ) ref -> rdi "CSE - aggressive"
-; V11 rat0 [V11,T06] ( 3, 4 ) ref -> rdx "Spilling to split statement for tree"
-; V12 rat1 [V12,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <System.Xml.Schema.XmlSchemaKeyref>
+; V03 tmp1 [V03,T03] ( 3, 6 ) ref -> rbp class-hnd single-def "non-inline candidate call" <System.Xml.Schema.XmlSchemaKeyref>
+; V04 tmp2 [V04,T07] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Xml.XmlQualifiedName>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 tmp4 [V06,T04] ( 5, 5 ) ref -> rdx
+; V07 tmp5 [V07,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V08 cse0 [V08,T08] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+; V09 rat0 [V09,T06] ( 3, 4 ) ref -> rdx "Spilling to split statement for tree"
+; V10 rat1 [V10,T00] ( 5, 7 ) ref -> rax class-hnd "replacement local" <System.Xml.Schema.XmlSchemaKeyref>
+; V11 rat2 [V11,T01] ( 5, 7 ) ref -> rbp class-hnd "replacement local" <System.Xml.Schema.XmlSchemaKeyref>
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M57871_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=14 bbWeight=1 PerfScore 4.75
G_M57871_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x120]
; gcrRegs +[rdi]
@@ -60,27 +60,29 @@ G_M57871_IG04: ; bbWeight=0, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=
G_M57871_IG05: ; bbWeight=1, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rax, rax
je SHORT G_M57871_IG10
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rdi, rdx
- test rdi, rdi
+ mov rbp, rdi
+ ; gcrRegs +[rbp]
+ test rbp, rbp
je SHORT G_M57871_IG08
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M57871_IG06: ; bbWeight=0.50, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.75
+G_M57871_IG06: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaKeyref
- cmp qword ptr [rdi], rcx
+ cmp qword ptr [rbp], rcx
je SHORT G_M57871_IG08
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M57871_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+ ;; size=16 bbWeight=0.50 PerfScore 2.12
+G_M57871_IG07: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbp]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaKeyref
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rdx] +[rax]
+ ; gcrRegs -[rdx rdi] +[rax]
; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M57871_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M57871_IG08: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -93,24 +95,25 @@ G_M57871_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- cmp byte ptr [rdi], dil
+ cmp byte ptr [rbp], bpl
mov rcx, 0xD1FFAB1E ; const ptr
test rdx, rdx
cmove rdx, gword ptr [rcx]
- lea rcx, bword ptr [rdi+0x70]
+ lea rcx, bword ptr [rbp+0x70]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rdi]
+ ; gcrRegs -[rax rdx rbp]
; byrRegs -[rcx]
nop
- ;; size=55 bbWeight=1 PerfScore 12.25
+ ;; size=56 bbWeight=1 PerfScore 12.25
G_M57871_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M57871_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rcx, 0xD1FFAB1E
@@ -126,15 +129,16 @@ G_M57871_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
; gcrRegs +[r8]
;; size=32 bbWeight=0 PerfScore 0.00
G_M57871_IG11: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
tail.jmp [System.Xml.Schema.XsdBuilder:SendValidationEvent(System.String,System.String):this]
; gcr arg pop 0
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 208, prolog size 7, PerfScore 30.06, instruction count 54, allocated bytes for code 208 (MethodHash=ce821df0) for method System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
+; Total bytes of code 223, prolog size 8, PerfScore 31.00, instruction count 58, allocated bytes for code 223 (MethodHash=ce821df0) for method System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
; ============================================================
Unwind Info:
@@ -142,12 +146,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+19 (+9.50%) : 245396.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
@@ -11,99 +11,110 @@
;
; V00 arg0 [V00,T00] ( 11, 7 ) ref -> rbx class-hnd single-def <System.Type>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T08] ( 3, 2 ) ref -> rax "guarded devirt return temp"
+; V02 tmp1 [V02,T07] ( 3, 2 ) ref -> rax "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,T07] ( 4, 2 ) ubyte -> rdx "Inline return value spill temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V06 tmp5 [V06,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
-; V08 tmp7 [V08,T09] ( 3, 2 ) int -> rbp
-; V09 tmp8 [V09,T10] ( 2, 2 ) ubyte -> rdx "Inline stloc first use temp"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> rbp single-def "Inlining Arg"
-;* V13 tmp12 [V13,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V14 tmp13 [V14,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V16 tmp15 [V16,T05] ( 3, 3 ) long -> rbp "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 cse0 [V17,T01] ( 3, 3 ) long -> rsi "CSE - aggressive"
-; V18 cse1 [V18,T02] ( 3, 3 ) long -> rdi "CSE - aggressive"
-; V19 cse2 [V19,T06] ( 3, 3 ) int -> rcx "CSE - moderate"
+; V04 tmp3 [V04,T06] ( 4, 2 ) ubyte -> rdx "Inline return value spill temp"
+; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
+; V07 tmp6 [V07,T08] ( 3, 2 ) int -> rdi
+; V08 tmp7 [V08,T09] ( 2, 2 ) ubyte -> rdx "Inline stloc first use temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
+;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) long -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V14 tmp13 [V14,T04] ( 3, 3 ) long -> rdi "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP
+; V15 cse0 [V15,T05] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V16 rat0 [V16,T01] ( 5, 7.50) ref -> rsi class-hnd "replacement local" <System.RuntimeType>
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
- push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 4.50
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M8853_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rbx]
- mov rdi, 0xD1FFAB1E ; System.RuntimeType
- cmp rsi, rdi
- jne G_M8853_IG11
- mov rbp, qword ptr [rbx+0x18]
- mov ecx, ebp
+ cmp byte ptr [rbx], bl
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ test rsi, rsi
+ je SHORT G_M8853_IG05
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.RuntimeType
+ cmp qword ptr [rsi], rcx
+ je SHORT G_M8853_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ xor rsi, rsi
+ ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=0.25 PerfScore 0.06
+G_M8853_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ je G_M8853_IG14
+ mov rdi, qword ptr [rsi+0x18]
+ mov ecx, edi
and ecx, 2
- jne SHORT G_M8853_IG10
+ jne SHORT G_M8853_IG13
test ecx, ecx
sete cl
movzx rcx, cl
call [<unknown method>]
; gcr arg pop 0
- mov eax, dword ptr [rbp]
+ mov eax, dword ptr [rdi]
and eax, 0xD1FFAB1E
- xor ebp, ebp
+ xor edi, edi
cmp eax, 0xD1FFAB1E
- sete bpl
- ;; size=66 bbWeight=1 PerfScore 15.25
-G_M8853_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- movzx rdx, bpl
+ sete dil
+ ;; size=52 bbWeight=1 PerfScore 13.00
+G_M8853_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ movzx rdx, dil
test edx, edx
- jne SHORT G_M8853_IG12
+ jne SHORT G_M8853_IG15
;; size=8 bbWeight=1 PerfScore 1.50
-G_M8853_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
cmp rbx, rax
- je SHORT G_M8853_IG07
- cmp rsi, rdi
- jne SHORT G_M8853_IG09
+ je SHORT G_M8853_IG10
+ mov rcx, 0xD1FFAB1E ; System.RuntimeType
+ cmp qword ptr [rbx], rcx
+ jne SHORT G_M8853_IG12
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=29 bbWeight=1 PerfScore 6.00
-G_M8853_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ;; size=39 bbWeight=1 PerfScore 9.00
+G_M8853_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M8853_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+G_M8853_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
- pop rbp
pop rsi
pop rdi
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M8853_IG07: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M8853_IG10: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.94 PerfScore 0.23
-G_M8853_IG08: ; bbWeight=0.94, epilog, nogc, extend
- add rsp, 40
+G_M8853_IG11: ; bbWeight=0.94, epilog, nogc, extend
+ add rsp, 32
pop rbx
- pop rbp
pop rsi
pop rdi
ret
- ;; size=9 bbWeight=0.94 PerfScore 3.05
-G_M8853_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.94 PerfScore 2.58
+G_M8853_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -112,14 +123,15 @@ G_M8853_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
call [rax+0x20]<unknown method>
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M8853_IG05
+ jmp SHORT G_M8853_IG08
;; size=18 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx]
- xor ebp, ebp
- jmp SHORT G_M8853_IG03
+G_M8853_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rbx rsi]
+ xor edi, edi
+ jmp SHORT G_M8853_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -131,23 +143,22 @@ G_M8853_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
test al, 32
setne dl
test edx, edx
- je SHORT G_M8853_IG04
+ je SHORT G_M8853_IG07
;; size=24 bbWeight=0 PerfScore 0.00
-G_M8853_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8853_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M8853_IG13: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
+G_M8853_IG16: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 32
pop rbx
- pop rbp
pop rsi
pop rdi
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 8, PerfScore 34.04, instruction count 70, allocated bytes for code 200 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 219, prolog size 7, PerfScore 39.51, instruction count 73, allocated bytes for code 219 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================
Unwind Info:
@@ -155,13 +166,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+13 (+11.21%) : 433858.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
@@ -11,13 +11,11 @@
;
; V00 this [V00,T02] ( 4, 3 ) ref -> rcx this class-hnd <OLEDB.Test.ModuleCore.CTestCase>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 4.50) ref -> rdx single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T06] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <OLEDB.Test.ModuleCore.CTestModule>
-; V05 tmp4 [V05,T07] ( 2, 0 ) ref -> rcx single-def "arg temp"
-; V06 cse0 [V06,T05] ( 4, 3 ) ref -> rbx "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 3, 4 ) ref -> rdx "Spilling to split statement for tree"
-; V08 rat1 [V08,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V02 tmp1 [V02,T05] ( 2, 0 ) ref -> rcx single-def "arg temp"
+; V03 cse0 [V03,T04] ( 5, 3 ) ref -> rbx "CSE - aggressive"
+; V04 rat0 [V04,T03] ( 3, 4 ) ref -> rdx "Spilling to split statement for tree"
+; V05 rat1 [V05,T00] ( 5, 7 ) ref -> r8 class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
+; V06 rat2 [V06,T01] ( 5, 7 ) ref -> rax class-hnd "replacement local" <OLEDB.Test.ModuleCore.CTestModule>
;
; Lcl frame size = 32
@@ -31,45 +29,50 @@ G_M5100_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
; gcrRegs +[rbx]
mov rdx, rbx
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
+ mov r8, rdx
+ ; gcrRegs +[r8]
+ test r8, r8
je SHORT G_M5100_IG05
;; size=15 bbWeight=1 PerfScore 3.75
-G_M5100_IG03: ; bbWeight=0.50, gcrefRegs=000D {rax rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M5100_IG03: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; System.Xml.WrappedReaderTests.WrappedReaderTest
- cmp qword ptr [rax], rcx
+ mov rax, 0xD1FFAB1E ; System.Xml.WrappedReaderTests.WrappedReaderTest
+ cmp qword ptr [r8], rax
je SHORT G_M5100_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M5100_IG04: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[r8]
mov rcx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M5100_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
+ mov r8, rax
+ ; gcrRegs +[r8]
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M5100_IG05: ; bbWeight=1, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ test r8, r8
je SHORT G_M5100_IG10
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rax, rdx
+ mov rax, rbx
+ ; gcrRegs +[rax]
test rax, rax
je SHORT G_M5100_IG08
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- mov rcx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
- cmp qword ptr [rax], rcx
+ ;; size=13 bbWeight=1 PerfScore 2.75
+G_M5100_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
+ mov rdx, 0xD1FFAB1E ; System.Xml.WrappedReaderTests.WrappedReaderTest
+ cmp qword ptr [rax], rdx
je SHORT G_M5100_IG08
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M5100_IG07: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M5100_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- call CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[rdx] +[rax]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; OLEDB.Test.ModuleCore.CTestModule
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25
+ ;; size=18 bbWeight=0 PerfScore 0.00
G_M5100_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
@@ -91,7 +94,7 @@ G_M5100_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
jmp SHORT G_M5100_IG02
;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 5, PerfScore 14.50, instruction count 31, allocated bytes for code 116 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
+; Total bytes of code 129, prolog size 5, PerfScore 14.00, instruction count 33, allocated bytes for code 129 (MethodHash=2222ec13) for method OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-13 (-32.50%) : 149919.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)
@@ -7,12 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx 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 (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 40
@@ -20,34 +18,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M8451_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38]
mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx
- je SHORT G_M8451_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-13 (-32.50%) : 35556.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
; Lcl frame size = 40
@@ -19,34 +17,21 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M24927_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38]
mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx
- je SHORT G_M24927_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12
-G_M24927_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25
+G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-25 (-30.49%) : 21253.dasm - Newtonsoft.Json.Linq.JToken:ToObjectSystem.__Canon:System.__Canon:this (FullOpts)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd single-def <Newtonsoft.Json.Linq.JToken>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <Newtonsoft.Json.Linq.JToken>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -22,57 +21,38 @@ G_M31157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, rdx
- ;; size=17 bbWeight=1 PerfScore 3.75
-G_M31157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=14 bbWeight=1 PerfScore 3.50
+G_M31157_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, qword ptr [rdx+0x38]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M31157_IG05
- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M31157_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M31157_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M31157_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M31157_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M31157_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=36 bbWeight=1 PerfScore 12.00
+G_M31157_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 82, prolog size 11, PerfScore 18.44, instruction count 27, allocated bytes for code 82 (MethodHash=76ef864a) for method Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 57, prolog size 11, PerfScore 17.75, instruction count 19, allocated bytes for code 57 (MethodHash=76ef864a) for method Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
+30 (+60.00%) : 94271.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():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,T00] ( 5, 2 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx 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 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
-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 rbx
sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M18245_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, gword ptr [rbx+0x10]
@@ -36,17 +35,25 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rcx, gword ptr [rbx+0x08]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
+ mov rbx, gword ptr [rbx+0x08]
+ cmp byte ptr [rbx], bl
mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
call [System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
- int3
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ ;; size=64 bbWeight=1 PerfScore 19.25
+G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ tail.jmp [rax]System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 50, prolog size 5, PerfScore 0.00, instruction count 13, allocated bytes for code 50 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 80, prolog size 5, PerfScore 23.50, instruction count 18, allocated bytes for code 80 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================
Unwind Info:
+30 (+60.00%) : 95628.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():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,T00] ( 5, 2 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx 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 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
-; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]>
+; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
-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 rbx
sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M51850_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, gword ptr [rbx+0x10]
@@ -36,17 +35,25 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rcx, gword ptr [rbx+0x08]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
+ mov rbx, gword ptr [rbx+0x08]
+ cmp byte ptr [rbx], bl
mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
- int3
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ ;; size=64 bbWeight=1 PerfScore 19.25
+G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 50, prolog size 5, PerfScore 0.00, instruction count 13, allocated bytes for code 50 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 80, prolog size 5, PerfScore 23.50, instruction count 18, allocated bytes for code 80 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================
Unwind Info:
+33 (+122.22%) : 95612.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)
@@ -8,31 +8,40 @@
; 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 -> rcx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
-;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
-;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping>
-; V06 cse0 [V06,T02] ( 2, 0 ) ref -> rcx "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection>
+;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V04 cse0 [V04,T02] ( 2, 2 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M51219_IG02: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rbx
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M51219_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
+ mov rbx, gword ptr [rcx+0x08]
+ ; gcrRegs +[rbx]
+ cmp byte ptr [rbx], bl
mov rcx, 0xD1FFAB1E
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
; gcrRegs -[rcx]
; gcr arg pop 0
- int3
- ;; size=23 bbWeight=0 PerfScore 0.00
+ mov r8, 0xD1FFAB1E
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ xor edx, edx
+ mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ ;; size=47 bbWeight=1 PerfScore 9.25
+G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 27, prolog size 4, PerfScore 0.00, instruction count 6, allocated bytes for code 27 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 60, prolog size 5, PerfScore 13.25, instruction count 13, allocated bytes for code 60 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================
Unwind Info:
@@ -40,9 +49,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
realworld.run.windows.x64.checked.mch
-25 (-33.78%) : 677.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)
@@ -7,11 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
@@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M13946_IG05
- ;; size=29 bbWeight=1 PerfScore 9.75
-G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M13946_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=33 bbWeight=1 PerfScore 11.75
+G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================
Unwind Info:
-41 (-30.15%) : 8364.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1int
@@ -8,17 +8,13 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 23.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
+; V00 arg0 [V00,T00] ( 7, 22.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T03] ( 5, 5 ) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp3 [V07,T02] ( 2, 16 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V08 tmp4 [V08,T01] ( 4, 25 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
-; V09 tmp5 [V09,T06] ( 2, 2 ) int -> rbx "Inlining Arg"
-; V10 tmp6 [V10,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
+; V05 tmp1 [V05,T02] ( 2, 2 ) int -> rbx "Inlining Arg"
+; V06 tmp2 [V06,T01] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
;
; Lcl frame size = 32
@@ -36,7 +32,7 @@ G_M51841_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M51841_IG08
+ jne SHORT G_M51841_IG06
;; size=23 bbWeight=8 PerfScore 22.00
G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -47,56 +43,37 @@ G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M51841_IG06
- mov rax, rbx
- mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx
- je SHORT G_M51841_IG05
- ;; size=41 bbWeight=4 PerfScore 29.00
-G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51841_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- mov rbx, gword ptr [rax+0x10]
- ; gcrRegs +[rbx]
+ je SHORT G_M51841_IG04
+ mov rbx, gword ptr [rbx+0x10]
jmp SHORT G_M51841_IG02
- ;; size=6 bbWeight=4 PerfScore 16.00
-G_M51841_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=29 bbWeight=4 PerfScore 27.00
+G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M51841_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ ret
+ ;; size=6 bbWeight=0.50 PerfScore 0.88
+G_M51841_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx]
+ mov ebx, dword ptr [rbx+0x10]
+ ; gcrRegs -[rbx]
+ mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov dword ptr [rax+0x08], ebx
+ ;; size=21 bbWeight=0.50 PerfScore 2.12
G_M51841_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M51841_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rcx], rax
- cmovne rcx, rbx
- mov ebx, dword ptr [rcx+0x10]
- ; gcrRegs -[rbx]
- mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
- ; gcrRegs -[rcx]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov dword ptr [rax+0x08], ebx
- ;; size=41 bbWeight=0.50 PerfScore 4.00
-G_M51841_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 136, prolog size 8, PerfScore 85.00, instruction count 35, allocated bytes for code 136 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
+; Total bytes of code 95, prolog size 8, PerfScore 65.00, instruction count 26, allocated bytes for code 95 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
; ============================================================
Unwind Info:
-25 (-29.07%) : 21741.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)
@@ -7,13 +7,12 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
;
; Lcl frame size = 40
@@ -22,60 +21,41 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, rdx
- ;; size=17 bbWeight=1 PerfScore 3.75
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=14 bbWeight=1 PerfScore 3.50
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, qword ptr [rdx+0x38]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x70]
call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M60617_IG05
- ;; size=36 bbWeight=1 PerfScore 14.00
-G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx
- je SHORT G_M60617_IG05
- ;; size=12 bbWeight=0.25 PerfScore 2.00
-G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=40 bbWeight=1 PerfScore 16.00
+G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 86, prolog size 11, PerfScore 22.44, instruction count 29, allocated bytes for code 86 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 61, prolog size 11, PerfScore 21.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 35007.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
@@ -13,8 +13,8 @@
; V02 arg2 [V02,T15] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Management.Automation.PSMethodInvocationConstraints>
; V03 arg3 [V03,T03] ( 8, 7.50) int -> rbx
; V04 arg4 [V04,T72] ( 1, 0.50) ref -> [rbp+0x30] class-hnd single-def <System.Dynamic.DynamicMetaObject>
-; V05 arg5 [V05,T06] ( 8, 7.54) ref -> rsi class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
-; V06 arg6 [V06,T38] ( 4, 2 ) ref -> r13 class-hnd single-def <System.Dynamic.BindingRestrictions>
+; V05 arg5 [V05,T05] ( 8, 7.54) ref -> rsi class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
+; V06 arg6 [V06,T39] ( 4, 2 ) ref -> r13 class-hnd single-def <System.Dynamic.BindingRestrictions>
; V07 arg7 [V07,T68] ( 1, 1 ) ref -> [rbp+0x48] class-hnd single-def <System.Management.Automation.MethodInformation[]>
; V08 arg8 [V08,T66] ( 2, 1 ) ref -> [rbp+0x50] class-hnd single-def <System.Type>
; V09 loc0 [V09 ] ( 2, 1.50) ubyte -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -23,19 +23,19 @@
; V12 loc3 [V12 ] ( 2, 1.50) ref -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V13 loc4 [V13,T01] ( 9, 11 ) int -> r12
; V14 loc5 [V14,T10] ( 4, 6 ) ref -> [rbp-0x78] class-hnd exact spill-single-def <System.Object[]>
-; V15 loc6 [V15,T37] ( 3, 2.50) ref -> rax class-hnd single-def <System.Management.Automation.MethodInformation>
+; V15 loc6 [V15,T38] ( 3, 2.50) ref -> rax class-hnd single-def <System.Management.Automation.MethodInformation>
; V16 loc7 [V16,T00] ( 12, 21.04) int -> [rbp-0x5C]
; V17 loc8 [V17,T02] ( 6, 10 ) ref -> r8 class-hnd <System.Object>
-; V18 loc9 [V18,T07] ( 12, 6 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V19 loc10 [V19,T04] ( 18, 9 ) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
+; V18 loc9 [V18,T06] ( 12, 6 ) ref -> r15 class-hnd single-def <<unknown class>>
+; V19 loc10 [V19,T07] ( 12, 6 ) ref -> rbx class-hnd <System.Linq.Expressions.Expression>
;* V20 loc11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V21 loc12 [V21,T62] ( 3, 1.50) ref -> r14 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
+; V21 loc12 [V21,T63] ( 3, 1.50) ref -> r14 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
; V22 OutArgs [V22 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V23 tmp1 [V23 ] ( 0, 0 ) ref -> zero-ref
;* V24 tmp2 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp3 [V25 ] ( 0, 0 ) ref -> zero-ref
;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref
-; V27 tmp5 [V27,T05] ( 6, 8 ) ref -> r8
+; V27 tmp5 [V27,T04] ( 6, 8 ) ref -> r8
; V28 tmp6 [V28,T08] ( 6, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <System.Type[]>
;* V29 tmp7 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V30 tmp8 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
@@ -44,15 +44,15 @@
;* V33 tmp11 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
; V34 tmp12 [V34,T12] ( 5, 5 ) ref -> rsi class-hnd exact single-def "dup spill" <System.Object[]>
; V35 tmp13 [V35,T17] ( 4, 4 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Object[]>
-; V36 tmp14 [V36,T25] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V37 tmp15 [V37,T26] ( 3, 3 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V36 tmp14 [V36,T26] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V37 tmp15 [V37,T27] ( 3, 3 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
; V38 tmp16 [V38,T18] ( 4, 4 ) ref -> rax class-hnd single-def "dup spill" <System.Type>
;* V39 tmp17 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
-; V40 tmp18 [V40,T63] ( 3, 1.50) ref -> r14
-; V41 tmp19 [V41,T36] ( 5, 2.50) ref -> r14
-; V42 tmp20 [V42,T42] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V40 tmp18 [V40,T64] ( 3, 1.50) ref -> r14
+; V41 tmp19 [V41,T37] ( 5, 2.50) ref -> r14
+; V42 tmp20 [V42,T43] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V43 tmp21 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
-; V44 tmp22 [V44,T43] ( 2, 2 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
+; V44 tmp22 [V44,T44] ( 2, 2 ) ref -> r8 class-hnd single-def "dup spill" <<unknown class>>
;* V45 tmp23 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
;* V46 tmp24 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V47 tmp25 [V47 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -60,66 +60,62 @@
;* V49 tmp27 [V49 ] ( 0, 0 ) ref -> zero-ref single-def
;* V50 tmp28 [V50 ] ( 0, 0 ) ref -> zero-ref single-def
;* V51 tmp29 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
-; V52 tmp30 [V52,T39] ( 4, 2 ) ref -> r8
-; V53 tmp31 [V53,T22] ( 4, 3 ) ref -> rax single-def "spilling varStr"
+; V52 tmp30 [V52,T40] ( 4, 2 ) ref -> r8
+; V53 tmp31 [V53,T23] ( 4, 3 ) ref -> rax single-def "spilling varStr"
;* V54 tmp32 [V54,T69] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V55 tmp33 [V55,T27] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V56 tmp34 [V56,T23] ( 4, 3 ) ref -> rax single-def "spilling varStr"
+; V55 tmp33 [V55,T28] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V56 tmp34 [V56,T24] ( 4, 3 ) ref -> rax single-def "spilling varStr"
;* V57 tmp35 [V57,T70] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V58 tmp36 [V58,T28] ( 3, 3 ) ref -> r12 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
+; V58 tmp36 [V58,T29] ( 3, 3 ) ref -> r12 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
; V59 tmp37 [V59,T19] ( 4, 4 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "dup spill" <System.Linq.Expressions.Expression[]>
-; V60 tmp38 [V60,T44] ( 2, 2 ) ref -> [rbp-0x88] class-hnd spill-single-def "impAppendStmt" <System.Type>
-; V61 tmp39 [V61,T45] ( 2, 2 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
-; V62 tmp40 [V62,T46] ( 2, 2 ) ref -> [rbp-0x98] class-hnd spill-single-def "non-inline candidate call" <System.Linq.Expressions.ConstantExpression>
+; V60 tmp38 [V60,T45] ( 2, 2 ) ref -> [rbp-0x88] class-hnd spill-single-def "impAppendStmt" <System.Type>
+; V61 tmp39 [V61,T46] ( 2, 2 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V62 tmp40 [V62,T47] ( 2, 2 ) ref -> [rbp-0x98] class-hnd spill-single-def "non-inline candidate call" <System.Linq.Expressions.ConstantExpression>
;* V63 tmp41 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
;* V64 tmp42 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Linq.Expressions.Expression>
-; V65 tmp43 [V65,T47] ( 2, 2 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V66 tmp44 [V66,T48] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.UnaryExpression>
-; V67 tmp45 [V67,T49] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.CatchBlock>
-; V68 tmp46 [V68,T29] ( 3, 3 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V69 tmp47 [V69,T30] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V70 tmp48 [V70,T24] ( 4, 3 ) ref -> rax single-def "spilling varStr"
+; V65 tmp43 [V65,T48] ( 2, 2 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V66 tmp44 [V66,T49] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.UnaryExpression>
+; V67 tmp45 [V67,T50] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.CatchBlock>
+; V68 tmp46 [V68,T30] ( 3, 3 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V69 tmp47 [V69,T31] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V70 tmp48 [V70,T25] ( 4, 3 ) ref -> rax single-def "spilling varStr"
;* V71 tmp49 [V71,T71] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V72 tmp50 [V72,T13] ( 5, 5 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V73 tmp51 [V73,T31] ( 3, 3 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-; V74 tmp52 [V74,T32] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-; V75 tmp53 [V75,T50] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V76 tmp54 [V76,T64] ( 3, 1.50) ref -> rbx class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression>
+; V73 tmp51 [V73,T32] ( 3, 3 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V74 tmp52 [V74,T33] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V75 tmp53 [V75,T51] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V76 tmp54 [V76,T21] ( 7, 3.50) ref -> rbx class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression>
; V77 tmp55 [V77,T09] ( 6, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
; V78 tmp56 [V78,T20] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type>
-; V79 tmp57 [V79,T40] ( 4, 2 ) int -> rbx "Inline return value spill temp"
-;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V81 tmp59 [V81 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V82 tmp60 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V83 tmp61 [V83 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V84 tmp62 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
-;* V85 tmp63 [V85 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-;* V86 tmp64 [V86 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V88 tmp66 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Assembly>
-; V89 tmp67 [V89,T67] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V90 tmp68 [V90,T33] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Attribute[]>
-; V91 tmp69 [V91 ] ( 2, 1 ) int -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;* V92 tmp70 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V93 tmp71 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V94 tmp72 [V94,T51] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
-; V95 tmp73 [V95,T34] ( 3, 3 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-;* V96 tmp74 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V97 tmp75 [V97,T52] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V98 tmp76 [V98,T53] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V99 tmp77 [V99,T54] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V100 tmp78 [V100,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V101 tmp79 [V101,T56] ( 2, 2 ) ref -> rcx single-def "arr expr"
-; V102 tmp80 [V102,T35] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V103 tmp81 [V103,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V104 tmp82 [V104,T58] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V105 tmp83 [V105,T59] ( 2, 2 ) ref -> rax single-def "argument with side effect"
-; V106 tmp84 [V106,T60] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V107 tmp85 [V107,T61] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V108 cse0 [V108,T21] ( 7, 3.50) long -> rdi "CSE - moderate"
-; V109 cse1 [V109,T41] ( 4, 2 ) long -> r12 "CSE - conservative"
-; V110 cse2 [V110,T65] ( 3, 1.50) long -> [rbp-0x70] spill-single-def "CSE - conservative"
-; V111 cse3 [V111,T11] ( 4, 5.04) ref -> [rbp-0xB0] hoist multi-def "CSE - moderate"
+; V79 tmp57 [V79,T41] ( 4, 2 ) int -> rbx "Inline return value spill temp"
+;* V80 tmp58 [V80 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V81 tmp59 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
+;* V82 tmp60 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType>
+;* V83 tmp61 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Assembly>
+; V84 tmp62 [V84,T67] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V85 tmp63 [V85,T34] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Attribute[]>
+; V86 tmp64 [V86 ] ( 2, 1 ) int -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;* V87 tmp65 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V88 tmp66 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V89 tmp67 [V89,T52] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V90 tmp68 [V90,T35] ( 3, 3 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+;* V91 tmp69 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
+; V92 tmp70 [V92,T53] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V93 tmp71 [V93,T54] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V94 tmp72 [V94,T55] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V95 tmp73 [V95,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+;* V96 tmp74 [V96 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V97 tmp75 [V97,T57] ( 2, 2 ) ref -> rcx single-def "arr expr"
+; V98 tmp76 [V98,T36] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V99 tmp77 [V99,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V100 tmp78 [V100,T59] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V101 tmp79 [V101,T60] ( 2, 2 ) ref -> rax single-def "argument with side effect"
+; V102 tmp80 [V102,T61] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V103 tmp81 [V103,T62] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V104 cse0 [V104,T22] ( 7, 3.50) long -> rdi "CSE - moderate"
+; V105 cse1 [V105,T42] ( 4, 2 ) long -> r12 "CSE - conservative"
+; V106 cse2 [V106,T65] ( 3, 1.50) long -> [rbp-0x70] spill-single-def "CSE - conservative"
+; V107 cse3 [V107,T11] ( 4, 5.04) ref -> [rbp-0xB0] hoist multi-def "CSE - moderate"
;
; Lcl frame size = 184
@@ -171,9 +167,9 @@ G_M1658_IG02: ; bbWeight=1, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRe
mov r8, gword ptr [rcx]
; gcrRegs +[r8]
mov gword ptr [rbp-0xB0], r8
- ; GC ptr vars +{V111}
+ ; GC ptr vars +{V107}
;; size=71 bbWeight=1 PerfScore 14.25
-G_M1658_IG03: ; bbWeight=3.96, gcVars=00000000000000000000000000000C00 {V14 V111}, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M1658_IG03: ; bbWeight=3.96, gcVars=00000000000000000000000000000C00 {V14 V107}, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax r8]
mov dword ptr [rbp-0x5C], edx
mov ecx, edx
@@ -194,14 +190,14 @@ G_M1658_IG04: ; bbWeight=1.98, gcrefRegs=E1C0 {rsi rdi r8 r13 r14 r15}, b
;; size=2 bbWeight=1.98 PerfScore 3.96
G_M1658_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000400 {V14}, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r8]
- ; GC ptr vars -{V111}
+ ; GC ptr vars -{V107}
mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
jmp SHORT G_M1658_IG14
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M1658_IG06: ; bbWeight=1.98, gcVars=00000000000000000000000000000C00 {V14 V111}, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M1658_IG06: ; bbWeight=1.98, gcVars=00000000000000000000000000000C00 {V14 V107}, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
- ; GC ptr vars +{V111}
+ ; GC ptr vars +{V107}
xor r8, r8
; gcrRegs +[r8]
;; size=3 bbWeight=1.98 PerfScore 0.49
@@ -218,7 +214,7 @@ G_M1658_IG07: ; bbWeight=3.96, gcrefRegs=E1C0 {rsi rdi r8 r13 r14 r15}, b
jl SHORT G_M1658_IG03
;; size=28 bbWeight=3.96 PerfScore 30.69
G_M1658_IG08: ; bbWeight=1, gcVars=00000000000000000000000000000400 {V14}, gcrefRegs=E0C0 {rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V111}
+ ; GC ptr vars -{V107}
mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
jmp SHORT G_M1658_IG14
@@ -757,7 +753,7 @@ G_M1658_IG38: ; bbWeight=0.50, gcrefRegs=A048 {rbx rsi r13 r15}, byrefReg
mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.ConstantExpression
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0xA8], rax
- ; GC ptr vars +{V95}
+ ; GC ptr vars +{V90}
lea rcx, bword ptr [rax+0x08]
; byrRegs +[rcx]
mov rdx, rdi
@@ -788,7 +784,7 @@ G_M1658_IG38: ; bbWeight=0.50, gcrefRegs=A048 {rbx rsi r13 r15}, byrefReg
; gcrRegs +[rdx]
;; size=250 bbWeight=0.50 PerfScore 23.75
G_M1658_IG39: ; bbWeight=0.50, extend
- ; GC ptr vars -{V61 V62 V95}
+ ; GC ptr vars -{V61 V62 V90}
call [<unknown method>]
; gcrRegs -[rcx rdx rsi r8-r9]
mov rsi, gword ptr [rbp-0x80]
+0 (0.00%) : 10756.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
@@ -8,36 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo>
-; V01 arg1 [V01,T01] ( 5, 3.50) ref -> rsi class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 4, 3.50) ref -> rsi this class-hnd single-def <FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo>
+; V01 arg1 [V01,T00] ( 5, 3.50) ref -> rbx class-hnd single-def <System.String>
; V02 loc0 [V02 ] ( 2, 1 ) struct ( 8) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref single-def
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 1 ) int -> rcx
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
+; V06 tmp1 [V06,T06] ( 2, 1 ) int -> rcx
+; V07 tmp2 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp7 [V12,T10] ( 2, 1 ) int -> rax
+; V12 tmp7 [V12,T07] ( 2, 1 ) int -> rax
; V13 tmp8 [V13 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op class-hnd exact "Single-def Box Helper" <System.Int32>
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V16 tmp11 [V16,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V17 tmp12 [V17,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V18 tmp13 [V18,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V19 tmp14 [V19,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
-; V21 tmp16 [V21 ] ( 2, 1 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V02.item (fldOffset=0x0)" P-DEP
-; V22 tmp17 [V22 ] ( 2, 1 ) int -> [rsp+0x34] do-not-enreg[X] addr-exposed "field V02._tag (fldOffset=0x4)" P-DEP
-;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V03.item (fldOffset=0x0)" P-INDEP
-;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "field V03._tag (fldOffset=0x4)" P-INDEP
-; V25 tmp20 [V25 ] ( 2, 1.50) int -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13.m_value (fldOffset=0x0)" P-DEP
-;* V26 tmp21 [V26,T11] ( 0, 0 ) int -> zero-ref single-def "field V20.item (fldOffset=0x0)" P-INDEP
-;* V27 tmp22 [V27,T12] ( 0, 0 ) int -> zero-ref single-def "field V20._tag (fldOffset=0x4)" P-INDEP
-; V28 tmp23 [V28,T05] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V29 tmp24 [V29,T06] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpValueOption`1[int]>
+; V17 tmp12 [V17 ] ( 2, 1 ) int -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V02.item (fldOffset=0x0)" P-DEP
+; V18 tmp13 [V18 ] ( 2, 1 ) int -> [rsp+0x34] do-not-enreg[X] addr-exposed "field V02._tag (fldOffset=0x4)" P-DEP
+;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03.item (fldOffset=0x0)" P-INDEP
+;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref single-def "field V03._tag (fldOffset=0x4)" P-INDEP
+; V21 tmp16 [V21 ] ( 2, 1.50) int -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V13.m_value (fldOffset=0x0)" P-DEP
+;* V22 tmp17 [V22,T08] ( 0, 0 ) int -> zero-ref single-def "field V16.item (fldOffset=0x0)" P-INDEP
+;* V23 tmp18 [V23,T09] ( 0, 0 ) int -> zero-ref single-def "field V16._tag (fldOffset=0x4)" P-INDEP
+; V24 tmp19 [V24,T03] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V25 tmp20 [V25,T04] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V26 cse0 [V26,T05] ( 3, 1.50) ref -> rsi "CSE - moderate"
;
; Lcl frame size = 56
@@ -47,13 +44,13 @@ G_M40596_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
sub rsp, 56
xor eax, eax
mov qword ptr [rsp+0x30], rax
- mov rbx, rcx
- ; gcrRegs +[rbx]
- mov rsi, rdx
+ mov rsi, rcx
; gcrRegs +[rsi]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
;; size=19 bbWeight=1 PerfScore 4.00
G_M40596_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdx, rbx
+ mov rdx, rsi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
@@ -64,10 +61,10 @@ G_M40596_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
;; size=23 bbWeight=1 PerfScore 2.75
G_M40596_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov ecx, dword ptr [rbx+0x08]
+ mov ecx, dword ptr [rsi+0x08]
test ecx, ecx
je SHORT G_M40596_IG04
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
call [FSharp.Compiler.Syntax.PrettyNaming:TryDemangleGenericNameAndPos(System.String):Microsoft.FSharp.Core.FSharpValueOption`1[int]]
; gcrRegs -[rcx]
@@ -91,9 +88,9 @@ G_M40596_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
test eax, eax
jne SHORT G_M40596_IG06
;; size=73 bbWeight=0.50 PerfScore 8.62
-G_M40596_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rax, rsi
+G_M40596_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M40596_IG05: ; bbWeight=0.50, epilog, nogc, extend
@@ -103,11 +100,11 @@ G_M40596_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M40596_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx]
- mov eax, dword ptr [rbx+0x08]
+ ; gcrRegs -[rax] +[rsi]
+ mov eax, dword ptr [rsi+0x08]
mov dword ptr [rsp+0x28], eax
call [<unknown method>]
- ; gcrRegs -[rbx] +[rax]
+ ; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
@@ -119,12 +116,12 @@ G_M40596_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi r8]
+ ; gcrRegs -[rcx rdx rbx r8]
; gcr arg pop 0
nop
;; size=52 bbWeight=0.50 PerfScore 7.00
+22 (+6.09%) : 4856.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
@@ -8,28 +8,27 @@
; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
-; V01 arg1 [V01,T00] ( 13, 13 ) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task>
-; V02 arg2 [V02,T01] ( 4, 4 ) ubyte -> [rbp+0x20] EH-live single-def
+; V00 this [V00,T02] ( 4, 2.50) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler>
+; V01 arg1 [V01,T00] ( 13, 7.50) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task>
+; V02 arg2 [V02,T01] ( 5, 3.50) ubyte -> [rbp+0x20] EH-live single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp2 [V05,T06] ( 4, 4 ) ubyte -> rdx "Inline return value spill temp"
-; V06 tmp3 [V06,T05] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V07 tmp4 [V07,T11] ( 3, 3 ) ubyte -> rdx "Inline return value spill temp"
-; V08 tmp5 [V08,T08] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V05 tmp2 [V05,T06] ( 4, 2 ) ubyte -> rdx "Inline return value spill temp"
+; V06 tmp3 [V06,T05] ( 4, 2 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V07 tmp4 [V07,T11] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V08 tmp5 [V08,T08] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V10 tmp7 [V10,T12] ( 2, 2 ) int -> rdx "Inline stloc first use temp"
+; V10 tmp7 [V10,T12] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V16 tmp13 [V16,T09] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
-; V17 PSPSym [V17,T13] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym"
-; V18 cse0 [V18,T10] ( 3, 3 ) ref -> rdx "CSE - aggressive"
-; V19 rat0 [V19,T07] ( 3, 4 ) byref -> rdx "TLS field access"
-; V20 rat1 [V20,T02] ( 3, 6 ) long -> rdx "TLS access"
-; V21 rat2 [V21,T03] ( 3, 6 ) long -> rdx "ThreadStaticBlockBase access"
+;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V15 tmp12 [V15,T09] ( 2, 2 ) byref -> rdx single-def "argument with side effect"
+; V16 PSPSym [V16,T13] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym"
+; V17 cse0 [V17,T10] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V18 rat0 [V18,T07] ( 3, 2 ) byref -> rdx "TLS field access"
+; V19 rat1 [V19,T03] ( 3, 3 ) long -> rdx "TLS access"
+; V20 rat2 [V20,T04] ( 3, 3 ) long -> rdx "ThreadStaticBlockBase access"
;
; Lcl frame size = 40
@@ -45,9 +44,11 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdx
; gcrRegs +[rbx]
;; size=26 bbWeight=1 PerfScore 6.00
-G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
test r8b, r8b
- je SHORT G_M14922_IG04
+ je SHORT G_M14922_IG05
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M14922_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx
test rbx, rbx
setne cl
@@ -59,23 +60,23 @@ G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M14922_IG04
+ jne SHORT G_M14922_IG05
xor eax, eax
- ;; size=34 bbWeight=1 PerfScore 10.50
-G_M14922_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=29 bbWeight=0.50 PerfScore 4.62
+G_M14922_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M14922_IG05: ; bbWeight=0.50, gcVars=0000000000000004 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
or dword ptr [rbx+0x34], 0x20000
mov rdx, gword ptr [rbx+0x28]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M14922_IG08
+ je SHORT G_M14922_IG09
cmp dword ptr [rdx+0x38], 1
- je SHORT G_M14922_IG07
+ je SHORT G_M14922_IG08
add rdx, 64
; gcrRegs -[rdx]
; byrRegs +[rdx]
@@ -83,27 +84,27 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000
; gcrRegs +[rdx]
; byrRegs -[rdx]
test rdx, rdx
- je SHORT G_M14922_IG05
+ je SHORT G_M14922_IG06
cmp dword ptr [rdx+0x20], 0
setne dl
; gcrRegs -[rdx]
movzx rdx, dl
- jmp SHORT G_M14922_IG06
- ;; size=46 bbWeight=1 PerfScore 20.00
-G_M14922_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M14922_IG07
+ ;; size=46 bbWeight=0.50 PerfScore 10.00
+G_M14922_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor edx, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M14922_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M14922_IG09
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M14922_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M14922_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M14922_IG10
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M14922_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, 1
- jmp SHORT G_M14922_IG09
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M14922_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M14922_IG10
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M14922_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor edx, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M14922_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M14922_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test edx, edx
sete dl
movzx rdx, dl
@@ -113,20 +114,20 @@ G_M14922_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
setne al
movzx rax, al
test edx, eax
- je SHORT G_M14922_IG12
+ je SHORT G_M14922_IG13
mov rdx, qword ptr GS:[0x0058]
mov rdx, qword ptr [rdx]
cmp dword ptr [rdx+0xD8], 11
- jl SHORT G_M14922_IG11
+ jl SHORT G_M14922_IG12
mov rdx, qword ptr [rdx+0xE0]
mov rdx, qword ptr [rdx+0x58]
test rdx, rdx
- je SHORT G_M14922_IG11
+ je SHORT G_M14922_IG12
mov rdx, bword ptr [rdx]
; byrRegs +[rdx]
add rdx, 16
- ;; size=75 bbWeight=1 PerfScore 21.00
-G_M14922_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
+ ;; size=75 bbWeight=0.50 PerfScore 10.50
+G_M14922_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
add rdx, 104
mov rcx, rbx
; gcrRegs +[rcx]
@@ -136,9 +137,9 @@ G_M14922_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
; gcrRegs -[rcx rbx r8]
; byrRegs -[rdx]
; gcr arg pop 0
- jmp SHORT G_M14922_IG13
- ;; size=18 bbWeight=1 PerfScore 5.75
-G_M14922_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M14922_IG14
+ ;; size=18 bbWeight=0.50 PerfScore 2.88
+G_M14922_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
mov ecx, 11
call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
@@ -146,21 +147,21 @@ G_M14922_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rdx, rax
; byrRegs +[rdx]
- jmp SHORT G_M14922_IG10
+ jmp SHORT G_M14922_IG11
;; size=15 bbWeight=0 PerfScore 0.00
-G_M14922_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M14922_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax rdx]
mov eax, dword ptr [rbx+0x34]
and eax, 0xD1FFAB1E
cmp eax, 0xD1FFAB1E
- je SHORT G_M14922_IG13
+ je SHORT G_M14922_IG14
lea rax, bword ptr [rbx+0x34]
; byrRegs +[rax]
mov edx, dword ptr [rbx+0x34]
or edx, 0xD1FFAB1E
xchg dword ptr [rax], edx
test edx, 0xD1FFAB1E
- jne SHORT G_M14922_IG13
+ jne SHORT G_M14922_IG14
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
@@ -168,36 +169,10 @@ G_M14922_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; byrRegs -[rax]
; gcr arg pop 0
nop
- ;; size=48 bbWeight=1 PerfScore 31.00
-G_M14922_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rsp
- call G_M14922_IG17
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M14922_IG14: ; bbWeight=1, nogc, extend
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M14922_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00}
- mov eax, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M14922_IG16: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M14922_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push rbp
- push rbx
- sub rsp, 40
- mov rbp, qword ptr [rcx+0x20]
- mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x30]
- ;; size=19 bbWeight=1 PerfScore 5.75
-G_M14922_IG18: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+ ;; size=48 bbWeight=0.50 PerfScore 15.50
+G_M14922_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp+0x20], 0
- je SHORT G_M14922_IG19
+ je SHORT G_M14922_IG15
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -209,18 +184,51 @@ G_M14922_IG18: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000
call [System.Threading.PortableThreadPool:NotifyWorkItemProgress():this]
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=31 bbWeight=1 PerfScore 12.25
-G_M14922_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M14922_IG20: ; bbWeight=1, funclet epilog, nogc, extend
+ ;; size=31 bbWeight=0.50 PerfScore 6.12
+G_M14922_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
...
smoke_tests.nativeaot.windows.x64.checked.mch
-18 (-30.00%) : 10229.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,12 +8,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -21,48 +20,31 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rdx
- mov rbx, rdx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rcx, qword ptr [rbx]
+ mov rbx, qword ptr [rdx]
+ mov rcx, rbx
mov rdx, r8
; gcrRegs +[rdx]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx r8] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M33075_IG05
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx]
- cmp qword ptr [r8], rcx
- je SHORT G_M33075_IG05
- ;; size=8 bbWeight=0.25 PerfScore 1.50
-G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbx
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M33075_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 60, prolog size 10, PerfScore 10.94, instruction count 20, allocated bytes for code 60 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
-18 (-30.00%) : 32109.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)
@@ -8,12 +8,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1"
-; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -21,48 +20,31 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rdx
- mov rbx, rdx
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 2.25
+G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rcx, qword ptr [rbx]
+ mov rbx, qword ptr [rdx]
+ mov rcx, rbx
mov rdx, r8
; gcrRegs +[rdx]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx r8] +[rax]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M33075_IG05
- ;; size=19 bbWeight=1 PerfScore 4.75
-G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx]
- cmp qword ptr [r8], rcx
- je SHORT G_M33075_IG05
- ;; size=8 bbWeight=0.25 PerfScore 1.50
-G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, rbx
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r8, rax
- ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M33075_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, r8
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 60, prolog size 10, PerfScore 10.94, instruction count 20, allocated bytes for code 60 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
-16 (-25.40%) : 13095.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:b_11(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
@@ -9,12 +9,9 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
-; V02 arg2 [V02,T01] ( 4, 4 ) ref -> r8 class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T00] ( 4, 4 ) ref -> r8 class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T02] ( 3, 4.25) ref -> rdx single-def "CASTCLASS eval op1"
-; V06 tmp2 [V06,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T00] ( 5, 6.75) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
;
; Lcl frame size = 40
@@ -24,48 +21,32 @@ G_M14484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M14484_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r8]
cmp dword ptr [r8+0x08], 0
- jbe SHORT G_M14484_IG07
+ jbe SHORT G_M14484_IG04
mov rdx, gword ptr [r8+0x10]
; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M14484_IG05
- ;; size=19 bbWeight=1 PerfScore 7.50
-G_M14484_IG03: ; bbWeight=0.25, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8]
- lea rax, [(reloc)] ; <unknown class>
- cmp qword ptr [rcx], rax
- je SHORT G_M14484_IG05
- ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M14484_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- mov rcx, rax
+ lea rcx, [(reloc)] ; <unknown class>
call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[rdx] +[rax]
+ ; gcrRegs -[rdx r8] +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.12 PerfScore 0.19
-G_M14484_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
call <unknown method>
- ; gcrRegs -[rcx] +[rax]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
nop
- ;; size=6 bbWeight=1 PerfScore 1.25
-G_M14484_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M14484_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M14484_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14484_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 11.56, instruction count 19, allocated bytes for code 63 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
+; Total bytes of code 47, prolog size 4, PerfScore 10.50, instruction count 13, allocated bytes for code 47 (MethodHash=de7fc76b) for method System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 6428.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (FullOpts)
@@ -11,14 +11,12 @@
; V00 this [V00,T01] ( 5, 4 ) ref -> rsi this class-hnd single-def <Internal.TypeSystem.TypeDesc>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 2, 1 ) int -> rcx
-;* V04 tmp2 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V05 tmp3 [V05,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.TypeDesc>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
-;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp7 [V09,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V10 tmp8 [V10,T06] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 1 ) int -> rcx
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V07 tmp5 [V07,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V08 tmp6 [V08,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
; Lcl frame size = 32
+2 (+0.41%) : 14279.dasm - System.Linq.Enumerable:SelectSystem.Canon,System.Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,23 +8,22 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T00] ( 15, 9.50) long -> rbx single-def
-; V01 arg0 [V01,T01] ( 10, 7 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T02] ( 9, 6.50) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T03] ( 10, 6 ) ref -> rdi class-hnd exact single-def <System.Func`2[System.__Canon,System.__Canon]>
; V03 loc0 [V03,T09] ( 5, 3 ) ref -> rbp class-hnd single-def <System.Linq.Enumerable+Iterator`1[System.__Canon]>
-; V04 loc1 [V04,T13] ( 3, 1.50) ref -> rbp class-hnd single-def <System.Collections.Generic.IList`1[System.__Canon]>
-; V05 loc2 [V05,T14] ( 3, 1.50) ref -> rax class-hnd single-def <System.Linq.IPartition`1[System.__Canon]>
-; V06 loc3 [V06,T11] ( 4, 2 ) ref -> r14 class-hnd single-def <System.__Canon[]>
-;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V04 loc1 [V04,T12] ( 3, 1.50) ref -> rbp class-hnd single-def <System.Collections.Generic.IList`1[System.__Canon]>
+; V05 loc2 [V05,T13] ( 3, 1.50) ref -> rax class-hnd single-def <System.Linq.IPartition`1[System.__Canon]>
+; V06 loc3 [V06,T10] ( 4, 2 ) ref -> r14 class-hnd single-def <System.__Canon[]>
+; V07 loc4 [V07,T14] ( 3, 1.50) ref -> rsi class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]>
; V08 loc5 [V08 ] ( 4, 2 ) ref -> [rsp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T04] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectEnumerableIterator`2[System.__Canon,System.__Canon]>
-; V11 tmp2 [V11,T10] ( 3, 3 ) ref -> rsi class-hnd exact "spilling QMark2" <System.Collections.Generic.List`1[System.__Canon]>
-; V12 tmp3 [V12,T05] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]>
-; V13 tmp4 [V13,T06] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]>
-; V14 tmp5 [V14,T07] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]>
-; V15 tmp6 [V15,T08] ( 5, 3.20) long -> rax "VirtualCall through function pointer"
-; V16 tmp7 [V16,T12] ( 3, 2 ) ref -> rax "calli"
-; V17 tmp8 [V17,T02] ( 8, 9 ) ref -> rax "Single return block return value"
+; V11 tmp2 [V11,T05] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]>
+; V12 tmp3 [V12,T06] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectListIterator`2[System.__Canon,System.__Canon]>
+; V13 tmp4 [V13,T07] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]>
+; V14 tmp5 [V14,T08] ( 5, 3.20) long -> rax "VirtualCall through function pointer"
+; V15 tmp6 [V15,T11] ( 3, 2 ) ref -> rax "calli"
+; V16 tmp7 [V16,T01] ( 8, 9 ) ref -> rax "Single return block return value"
;
; Lcl frame size = 48
@@ -131,37 +130,40 @@ G_M24041_IG08: ; bbWeight=0.50, gcrefRegs=4080 {rdi r14}, byrefRegs=0000
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
+ mov rbx, rax
+ ; gcrRegs +[rbx]
call System.Threading.ManagedThreadId:get_Current():int
; gcrRegs -[rax]
; gcr arg pop 0
- mov dword ptr [rsi+0x10], eax
- lea rcx, bword ptr [rsi+0x18]
+ mov dword ptr [rbx+0x10], eax
+ lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
mov rdx, r14
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx r14]
; byrRegs -[rcx]
- lea rcx, bword ptr [rsi+0x20]
+ lea rcx, bword ptr [rbx+0x20]
; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
- mov rax, rsi
+ mov rax, rbx
; gcrRegs +[rax]
jmp G_M24041_IG13
;; size=52 bbWeight=0.50 PerfScore 5.50
G_M24041_IG09: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbp rdi]
- mov rcx, qword ptr [rsi]
- xor rax, rax
- ; gcrRegs +[rax]
- cmp rcx, qword ptr [rbx+0x18]
- cmovne rsi, rax
+ ; gcrRegs -[rax rbx] +[rbp rsi rdi]
+ mov rcx, qword ptr [rbx+0x18]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx rsi] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
test rsi, rsi
je SHORT G_M24041_IG10
mov rcx, qword ptr [rbx+0x30]
@@ -191,7 +193,7 @@ G_M24041_IG09: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
mov rax, rbx
; gcrRegs +[rax]
jmp G_M24041_IG13
- ;; size=70 bbWeight=0.50 PerfScore 8.88
+ ;; size=72 bbWeight=0.50 PerfScore 7.88
G_M24041_IG10: ; bbWeight=0.50, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbx] +[rbp rdi]
mov rcx, qword ptr [rbx+0x38]
@@ -304,7 +306,7 @@ G_M24041_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 487, prolog size 22, PerfScore 66.75, instruction count 139, allocated bytes for code 487 (MethodHash=3db4a216) for method System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 489, prolog size 22, PerfScore 65.75, instruction count 139, allocated bytes for code 489 (MethodHash=3db4a216) for method System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================
Unwind Info:
+5 (+1.37%) : 11736.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvertSystem.__Canon:System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
@@ -7,24 +7,23 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T10] ( 4, 10 ) ref -> rdi this class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
-; V01 TypeCtx [V01,T09] ( 8, 10.50) long -> rsi single-def
+; V00 this [V00,T08] ( 4, 10 ) ref -> rsi this class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
+; V01 TypeCtx [V01,T11] ( 6, 9.50) long -> rdi single-def
; V02 arg1 [V02,T03] ( 8, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]>
-; V03 arg2 [V03,T14] ( 4, 2 ) ref -> rbp class-hnd exact single-def <System.String>
-; V04 loc0 [V04,T05] ( 7, 26.50) ref -> r14 class-hnd <System.__Canon[]>
+; V03 arg2 [V03,T13] ( 4, 2 ) ref -> rbp class-hnd exact single-def <System.String>
+; V04 loc0 [V04,T04] ( 7, 26.50) ref -> r14 class-hnd <System.__Canon[]>
; V05 loc1 [V05,T02] ( 9, 39 ) int -> r15
; V06 loc2 [V06,T12] ( 4, 8 ) int -> r13
-; V07 loc3 [V07,T11] ( 4, 12 ) ref -> r12 class-hnd <System.__Canon>
+; V07 loc3 [V07,T09] ( 4, 12 ) ref -> [rsp+0x20] class-hnd spill-single-def <System.__Canon>
; V08 loc4 [V08,T00] ( 6, 82 ) int -> [rsp+0x2C]
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T06] ( 3, 17 ) ref -> rax "CASTCLASS eval op1"
-; V11 tmp2 [V11,T13] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V12 tmp3 [V12,T04] ( 5, 27 ) ref -> r12 class-hnd "spilling QMark2" <System.__Canon>
-; V13 tmp4 [V13,T15] ( 3, 3 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]>
-; V14 tmp5 [V14,T07] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V15 tmp6 [V15,T08] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V16 tmp7 [V16,T01] ( 2, 64 ) ref -> r8 "argument with side effect"
-; V17 tmp8 [V17,T16] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V10 tmp1 [V10,T14] ( 3, 3 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]>
+; V11 tmp2 [V11,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V12 tmp3 [V12,T06] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V13 tmp4 [V13,T07] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V14 tmp5 [V14,T01] ( 2, 64 ) ref -> r8 "argument with side effect"
+; V15 tmp6 [V15,T15] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V16 cse0 [V16,T10] ( 4, 12 ) long -> r12 "CSE - aggressive"
;
; Lcl frame size = 56
@@ -39,17 +38,17 @@ G_M2102_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 56
mov qword ptr [rsp+0x30], rdx
- mov rdi, rcx
- ; gcrRegs +[rdi]
- mov rsi, rdx
+ mov rsi, rcx
+ ; gcrRegs +[rsi]
+ mov rdi, rdx
mov rbx, r8
; gcrRegs +[rbx]
mov rbp, r9
; gcrRegs +[rbp]
;; size=33 bbWeight=1 PerfScore 10.25
-G_M2102_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
+G_M2102_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je G_M2102_IG16
+ je G_M2102_IG14
xor r14, r14
; gcrRegs +[r14]
xor r15d, r15d
@@ -60,9 +59,9 @@ G_M2102_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000
; gcr arg pop 0
mov r13d, eax
test r13d, r13d
- jle G_M2102_IG11
+ jle G_M2102_IG08
;; size=35 bbWeight=1 PerfScore 4.50
-G_M2102_IG03: ; bbWeight=4, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M2102_IG03: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
mov edx, r15d
@@ -71,56 +70,46 @@ G_M2102_IG03: ; bbWeight=4, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rdi
+ mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rsi]
; gcrRegs -[rax]
call [rax+0x30]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, qword ptr [rsi+0x08]
+ mov r12, qword ptr [rdi+0x08]
+ mov rcx, r12
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- test r12, r12
- je SHORT G_M2102_IG06
- ;; size=43 bbWeight=4 PerfScore 47.00
-G_M2102_IG04: ; bbWeight=1, gcrefRegs=50A9 {rax rbx rbp rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rsi+0x08]
- cmp qword ptr [r12], rcx
- je SHORT G_M2102_IG06
- ;; size=10 bbWeight=1 PerfScore 6.00
-G_M2102_IG05: ; bbWeight=0.50, gcrefRegs=40A9 {rax rbx rbp rdi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
mov rdx, rax
; gcrRegs +[rdx]
+ mov rcx, r12
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[rdx]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- ;; size=11 bbWeight=0.50 PerfScore 0.75
-G_M2102_IG06: ; bbWeight=4, gcrefRegs=50A8 {rbx rbp rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- test r12, r12
- je G_M2102_IG17
+ mov gword ptr [rsp+0x20], rax
+ ; GC ptr vars +{V07}
+ test rax, rax
+ je G_M2102_IG15
test r14, r14
- jne SHORT G_M2102_IG09
- ;; size=14 bbWeight=4 PerfScore 10.00
-G_M2102_IG07: ; bbWeight=2, gcrefRegs=50A8 {rbx rbp rdi r12 r14}, byrefRegs=0000 {}, byref, isz
+ jne G_M2102_IG11
+ ;; size=72 bbWeight=4 PerfScore 62.00
+G_M2102_IG04: ; bbWeight=2, gcVars=0000000000000200 {V07}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
mov edx, r15d
call System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:get_Item(int):System.__Canon:this
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
+ mov r12, gword ptr [rsp+0x20]
+ ; gcrRegs +[r12]
cmp rax, r12
- je SHORT G_M2102_IG10
- mov rcx, qword ptr [rsi+0x10]
+ je SHORT G_M2102_IG07
+ mov rcx, qword ptr [rdi+0x10]
movsxd rdx, r13d
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs -[r14]
@@ -130,9 +119,9 @@ G_M2102_IG07: ; bbWeight=2, gcrefRegs=50A8 {rbx rbp rdi r12 r14}, byrefRe
xor eax, eax
; gcrRegs -[rax]
test r15d, r15d
- jle SHORT G_M2102_IG09
- ;; size=38 bbWeight=2 PerfScore 15.50
-G_M2102_IG08: ; bbWeight=16, gcrefRegs=50A8 {rbx rbp rdi r12 r14}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M2102_IG06
+ ;; size=43 bbWeight=2 PerfScore 17.50
+G_M2102_IG05: ; bbWeight=16, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
mov dword ptr [rsp+0x2C], eax
@@ -151,33 +140,72 @@ G_M2102_IG08: ; bbWeight=16, gcrefRegs=50A8 {rbx rbp rdi r12 r14}, byrefR
mov eax, dword ptr [rsp+0x2C]
inc eax
cmp eax, r15d
- jl SHORT G_M2102_IG08
+ jl SHORT G_M2102_IG05
;; size=41 bbWeight=16 PerfScore 152.00
-G_M2102_IG09: ; bbWeight=2, gcrefRegs=50A8 {rbx rbp rdi r12 r14}, byrefRegs=0000 {}, byref
+G_M2102_IG06: ; bbWeight=2, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref
movsxd rdx, r15d
mov rcx, r14
; gcrRegs +[rcx]
mov r8, r12
; gcrRegs +[r8]
+ ; GC ptr vars -{V07}
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rcx r8 r12]
; gcr arg pop 0
;; size=14 bbWeight=2 PerfScore 3.50
-G_M2102_IG10: ; bbWeight=4, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref
+G_M2102_IG07: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
inc r15d
cmp r15d, r13d
jl G_M2102_IG03
;; size=12 bbWeight=4 PerfScore 6.00
-G_M2102_IG11: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp rdi]
+G_M2102_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp rsi]
test r14, r14
- jne SHORT G_M2102_IG14
+ jne SHORT G_M2102_IG12
;; size=5 bbWeight=1 PerfScore 1.25
-G_M2102_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M2102_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M2102_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M2102_IG11: ; bbWeight=2, gcVars=0000000000000200 {V07}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbp rsi r14]
+ ; GC ptr vars +{V07}
+ mov r12, gword ptr [rsp+0x20]
+ ; gcrRegs +[r12]
+ jmp SHORT G_M2102_IG06
+ ;; size=7 bbWeight=2 PerfScore 6.00
+G_M2102_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx rbp rsi r12]
+ ; GC ptr vars -{V07}
+ mov rcx, qword ptr [rdi]
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ lea rcx, bword ptr [rbp+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, r14
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx r14]
+ ; byrRegs -[rcx]
+ mov rax, rbp
+ ; gcrRegs +[rax]
+ ;; size=26 bbWeight=0.50 PerfScore 2.62
G_M2102_IG13: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
@@ -190,38 +218,8 @@ G_M2102_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M2102_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbx] +[r14]
- mov rcx, qword ptr [rsi]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rsi, rax
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.x64.checked.mch |
90 |
76 |
10 |
4 |
-1,374 |
+70 |
| benchmarks.run_pgo.windows.x64.checked.mch |
355 |
349 |
6 |
0 |
-4,960 |
+117 |
| benchmarks.run_tiered.windows.x64.checked.mch |
37 |
29 |
7 |
1 |
-560 |
+47 |
| coreclr_tests.run.windows.x64.checked.mch |
187 |
151 |
17 |
19 |
-2,500 |
+458 |
| libraries.crossgen2.windows.x64.checked.mch |
1,113 |
1,111 |
2 |
0 |
-30,604 |
+2 |
| libraries.pmi.windows.x64.checked.mch |
575 |
536 |
20 |
19 |
-10,991 |
+201 |
| libraries_tests.run.windows.x64.Release.mch |
1,208 |
1,084 |
107 |
17 |
-20,014 |
+1,589 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
745 |
692 |
30 |
23 |
-15,348 |
+810 |
| realworld.run.windows.x64.checked.mch |
147 |
136 |
1 |
10 |
-2,824 |
+22 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
162 |
154 |
2 |
6 |
-2,316 |
+7 |
|
4,619 |
4,318 |
202 |
99 |
-91,491 |
+3,323 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x64.checked.mch |
26,186 |
4 |
26,182 |
234 (0.83%) |
1,900 (6.76%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
97,116 |
49,789 |
47,327 |
129 (0.13%) |
4,602 (4.52%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
53,739 |
36,842 |
16,897 |
76 (0.14%) |
646 (1.19%) |
| coreclr_tests.run.windows.x64.checked.mch |
564,294 |
340,982 |
223,312 |
446 (0.08%) |
9,695 (1.69%) |
| libraries.crossgen2.windows.x64.checked.mch |
243,418 |
15 |
243,403 |
0 (0.00%) |
7 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
277,455 |
6 |
277,449 |
2,206 (0.72%) |
31,043 (10.06%) |
| libraries_tests.run.windows.x64.Release.mch |
640,771 |
479,203 |
161,568 |
1,126 (0.17%) |
32,516 (4.83%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
276,432 |
21,885 |
254,547 |
2,194 (0.68%) |
44,079 (13.75%) |
| realworld.run.windows.x64.checked.mch |
31,907 |
3 |
31,904 |
402 (1.09%) |
4,983 (13.51%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
30,919 |
11 |
30,908 |
3 (0.01%) |
1,493 (4.61%) |
|
2,242,237 |
928,740 |
1,313,497 |
6,816 (0.29%) |
130,964 (5.52%) |
jit-analyze output
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 7230808 (overridden on cmd)
Total bytes of diff: 7229504 (overridden on cmd)
Total bytes of delta: -1304 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
19 : 9847.dasm (2.62 % of base)
11 : 6722.dasm (2.66 % of base)
7 : 5995.dasm (0.63 % of base)
5 : 15332.dasm (5.00 % of base)
5 : 27104.dasm (5.00 % of base)
5 : 9857.dasm (5.00 % of base)
5 : 14809.dasm (5.00 % of base)
5 : 16996.dasm (5.00 % of base)
5 : 27467.dasm (5.00 % of base)
3 : 2630.dasm (0.43 % of base)
Top file improvements (bytes):
-64 : 3899.dasm (-1.76 % of base)
-57 : 11500.dasm (-2.02 % of base)
-37 : 8622.dasm (-4.95 % of base)
-36 : 19253.dasm (-5.74 % of base)
-34 : 20500.dasm (-14.11 % of base)
-34 : 10507.dasm (-3.51 % of base)
-34 : 10612.dasm (-11.56 % of base)
-29 : 17118.dasm (-3.35 % of base)
-26 : 8651.dasm (-7.85 % of base)
-26 : 21699.dasm (-6.99 % of base)
-26 : 22693.dasm (-14.77 % of base)
-26 : 855.dasm (-10.44 % of base)
-25 : 18116.dasm (-27.78 % of base)
-25 : 4176.dasm (-12.44 % of base)
-25 : 3551.dasm (-29.07 % of base)
-25 : 857.dasm (-33.78 % of base)
-23 : 10458.dasm (-3.75 % of base)
-23 : 7912.dasm (-23.47 % of base)
-21 : 1698.dasm (-5.68 % of base)
-21 : 8868.dasm (-2.24 % of base)
54 total files with Code Size differences (44 improved, 10 regressed), 4 unchanged.
Top method regressions (bytes):
19 (2.62 % of base) : 9847.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
11 (2.66 % of base) : 6722.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
7 (0.63 % of base) : 5995.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
5 (5.00 % of base) : 9857.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
5 (5.00 % of base) : 27467.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
5 (5.00 % of base) : 14809.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
5 (5.00 % of base) : 15332.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
5 (5.00 % of base) : 16996.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
5 (5.00 % of base) : 27104.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
3 (0.43 % of base) : 2630.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
Top method improvements (bytes):
-64 (-1.76 % of base) : 3899.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-57 (-2.02 % of base) : 11500.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)
-37 (-4.95 % of base) : 8622.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-36 (-5.74 % of base) : 19253.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-34 (-14.11 % of base) : 20500.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-34 (-3.51 % of base) : 10507.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (FullOpts)
-34 (-11.56 % of base) : 10612.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
-29 (-3.35 % of base) : 17118.dasm - System.Xml.XmlNode:AppendChild(System.Xml.XmlNode):System.Xml.XmlNode:this (FullOpts)
-26 (-14.77 % of base) : 22693.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-10.44 % of base) : 855.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (FullOpts)
-26 (-6.99 % of base) : 21699.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-26 (-7.85 % of base) : 8651.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-25 (-27.78 % of base) : 18116.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-25 (-33.78 % of base) : 857.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-25 (-29.07 % of base) : 3551.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-25 (-12.44 % of base) : 4176.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-23 (-23.47 % of base) : 7912.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-23 (-3.75 % of base) : 10458.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
-21 (-2.24 % of base) : 8868.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
-21 (-5.68 % of base) : 1698.dasm - System.Collections.Sort`1[System.__Canon]:GenerateValues():System.__Canon[]:this (FullOpts)
Top method regressions (percentages):
5 (5.00 % of base) : 9857.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
5 (5.00 % of base) : 27467.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
5 (5.00 % of base) : 14809.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
5 (5.00 % of base) : 15332.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
5 (5.00 % of base) : 16996.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
5 (5.00 % of base) : 27104.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
11 (2.66 % of base) : 6722.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
19 (2.62 % of base) : 9847.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
7 (0.63 % of base) : 5995.dasm - ProtoBuf.Internal.TypeHelper`1[System.__Canon]:.cctor() (FullOpts)
3 (0.43 % of base) : 2630.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
Top method improvements (percentages):
-25 (-33.78 % of base) : 857.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-13 (-32.50 % of base) : 2027.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-29.07 % of base) : 3551.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-25 (-27.78 % of base) : 18116.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-18 (-26.47 % of base) : 11025.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-13 (-25.00 % of base) : 2609.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
-23 (-23.47 % of base) : 7912.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
-13 (-19.12 % of base) : 4505.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-13 (-17.33 % of base) : 18962.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
-15 (-16.48 % of base) : 19463.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-19 (-15.97 % of base) : 9058.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
-16 (-15.84 % of base) : 13895.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
-26 (-14.77 % of base) : 22693.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-13 (-14.29 % of base) : 16535.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
-13 (-14.29 % of base) : 4866.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
-13 (-14.29 % of base) : 13808.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon:this (FullOpts)
-34 (-14.11 % of base) : 20500.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-16 (-13.11 % of base) : 14865.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (FullOpts)
-13 (-12.87 % of base) : 8518.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
-14 (-12.84 % of base) : 13542.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 30419246 (overridden on cmd)
Total bytes of diff: 30414403 (overridden on cmd)
Total bytes of delta: -4843 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 101228.dasm (1.73 % of base)
25 : 28760.dasm (1.63 % of base)
18 : 71106.dasm (10.17 % of base)
18 : 93586.dasm (10.23 % of base)
14 : 67939.dasm (0.65 % of base)
14 : 67938.dasm (0.61 % of base)
Top file improvements (bytes):
-88 : 69084.dasm (-2.44 % of base)
-33 : 74779.dasm (-7.19 % of base)
-31 : 24605.dasm (-7.91 % of base)
-28 : 70818.dasm (-7.78 % of base)
-28 : 72042.dasm (-7.78 % of base)
-25 : 15676.dasm (-33.78 % of base)
-22 : 73648.dasm (-2.89 % of base)
-22 : 90933.dasm (-3.25 % of base)
-20 : 100154.dasm (-3.15 % of base)
-20 : 74720.dasm (-9.22 % of base)
-20 : 99653.dasm (-3.15 % of base)
-20 : 33771.dasm (-3.15 % of base)
-20 : 36033.dasm (-3.15 % of base)
-20 : 39511.dasm (-3.15 % of base)
-20 : 43647.dasm (-3.15 % of base)
-20 : 47447.dasm (-3.15 % of base)
-20 : 64550.dasm (-8.97 % of base)
-20 : 72382.dasm (-3.15 % of base)
-20 : 84029.dasm (-3.15 % of base)
-20 : 87429.dasm (-3.15 % of base)
57 total files with Code Size differences (51 improved, 6 regressed), 0 unchanged.
Top method regressions (bytes):
28 (1.73 % of base) : 101228.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
25 (1.63 % of base) : 28760.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
18 (10.17 % of base) : 71106.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
18 (10.23 % of base) : 93586.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
14 (0.65 % of base) : 67939.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
14 (0.61 % of base) : 67938.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
Top method improvements (bytes):
-88 (-2.44 % of base) : 69084.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-33 (-7.19 % of base) : 74779.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-31 (-7.91 % of base) : 24605.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-7.78 % of base) : 70818.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-7.78 % of base) : 72042.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-25 (-33.78 % of base) : 15676.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-22 (-2.89 % of base) : 73648.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-22 (-3.25 % of base) : 90933.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
-20 (-9.22 % of base) : 74720.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-20 (-8.97 % of base) : 64550.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-20 (-3.15 % of base) : 100154.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 99653.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 33771.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 36033.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 39511.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 43647.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 47447.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 72382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 84029.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-3.15 % of base) : 87429.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
18 (10.23 % of base) : 93586.dasm - PerfLabTests.CastingPerf2.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
18 (10.17 % of base) : 71106.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
28 (1.73 % of base) : 101228.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
25 (1.63 % of base) : 28760.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
14 (0.65 % of base) : 67939.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
14 (0.61 % of base) : 67938.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
Top method improvements (percentages):
-25 (-33.78 % of base) : 15676.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-18 (-17.82 % of base) : 68075.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-13 (-10.83 % of base) : 73727.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-20 (-9.22 % of base) : 74720.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-20 (-8.97 % of base) : 64550.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-31 (-7.91 % of base) : 24605.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-18 (-7.89 % of base) : 12620.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-28 (-7.78 % of base) : 70818.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-28 (-7.78 % of base) : 72042.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-33 (-7.19 % of base) : 74779.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-12 (-6.03 % of base) : 69068.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-9 (-5.70 % of base) : 74295.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-5.07 % of base) : 73448.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-16 (-4.80 % of base) : 24628.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
-16 (-4.05 % of base) : 40900.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-12 (-3.92 % of base) : 91817.dasm - System.Dynamic.Utils.ExpressionUtils:RequiresCanRead(System.Linq.Expressions.Expression,System.String,int) (Tier1)
-13 (-3.38 % of base) : 16754.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-13 (-3.38 % of base) : 47884.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-22 (-3.25 % of base) : 90933.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
-20 (-3.15 % of base) : 100154.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12109845 (overridden on cmd)
Total bytes of diff: 12109332 (overridden on cmd)
Total bytes of delta: -513 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
11 : 51712.dasm (2.66 % of base)
6 : 29055.dasm (4.65 % of base)
6 : 31480.dasm (4.65 % of base)
6 : 52922.dasm (4.65 % of base)
6 : 21491.dasm (4.65 % of base)
6 : 27318.dasm (4.65 % of base)
6 : 53486.dasm (4.65 % of base)
Top file improvements (bytes):
-34 : 32501.dasm (-3.51 % of base)
-34 : 45170.dasm (-14.11 % of base)
-29 : 3013.dasm (-10.14 % of base)
-26 : 3017.dasm (-10.44 % of base)
-26 : 43095.dasm (-6.99 % of base)
-26 : 45039.dasm (-14.77 % of base)
-25 : 47086.dasm (-12.44 % of base)
-25 : 22144.dasm (-29.07 % of base)
-25 : 19013.dasm (-27.47 % of base)
-25 : 6486.dasm (-33.78 % of base)
-23 : 32526.dasm (-3.55 % of base)
-20 : 45075.dasm (-10.42 % of base)
-19 : 26248.dasm (-5.18 % of base)
-18 : 13510.dasm (-7.93 % of base)
-18 : 32594.dasm (-26.47 % of base)
-18 : 42323.dasm (-17.82 % of base)
-16 : 45418.dasm (-10.67 % of base)
-16 : 45779.dasm (-5.00 % of base)
-16 : 33651.dasm (-4.88 % of base)
-14 : 33667.dasm (-3.17 % of base)
36 total files with Code Size differences (29 improved, 7 regressed), 1 unchanged.
Top method regressions (bytes):
11 (2.66 % of base) : 51712.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
6 (4.65 % of base) : 21491.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
6 (4.65 % of base) : 53486.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
6 (4.65 % of base) : 27318.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
6 (4.65 % of base) : 29055.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
6 (4.65 % of base) : 31480.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
6 (4.65 % of base) : 52922.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
Top method improvements (bytes):
-34 (-14.11 % of base) : 45170.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-34 (-3.51 % of base) : 32501.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (Tier1)
-29 (-10.14 % of base) : 3013.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-26 (-14.77 % of base) : 45039.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-26 (-10.44 % of base) : 3017.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
-26 (-6.99 % of base) : 43095.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
-25 (-33.78 % of base) : 6486.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-25 (-27.47 % of base) : 19013.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-25 (-29.07 % of base) : 22144.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-25 (-12.44 % of base) : 47086.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-23 (-3.55 % of base) : 32526.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
-20 (-10.42 % of base) : 45075.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-19 (-5.18 % of base) : 26248.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-18 (-17.82 % of base) : 42323.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-18 (-7.93 % of base) : 13510.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-18 (-26.47 % of base) : 32594.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-16 (-10.67 % of base) : 45418.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-16 (-5.00 % of base) : 45779.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-16 (-4.88 % of base) : 33651.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier1)
-14 (-3.17 % of base) : 33667.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
Top method regressions (percentages):
6 (4.65 % of base) : 21491.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
6 (4.65 % of base) : 53486.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
6 (4.65 % of base) : 27318.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
6 (4.65 % of base) : 29055.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
6 (4.65 % of base) : 31480.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
6 (4.65 % of base) : 52922.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
11 (2.66 % of base) : 51712.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
Top method improvements (percentages):
-25 (-33.78 % of base) : 6486.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-25 (-29.07 % of base) : 22144.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
-25 (-27.47 % of base) : 19013.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-18 (-26.47 % of base) : 32594.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-18 (-17.82 % of base) : 42323.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-26 (-14.77 % of base) : 45039.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-34 (-14.11 % of base) : 45170.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-25 (-12.44 % of base) : 47086.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-13 (-11.02 % of base) : 45301.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
-16 (-10.67 % of base) : 45418.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-26 (-10.44 % of base) : 3017.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
-20 (-10.42 % of base) : 45075.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-13 (-10.16 % of base) : 42596.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
-29 (-10.14 % of base) : 3013.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
-13 (-9.42 % of base) : 19175.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-13 (-8.50 % of base) : 43902.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
-13 (-8.39 % of base) : 36697.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
-18 (-7.93 % of base) : 13510.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-26 (-6.99 % of base) : 43095.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
-19 (-5.18 % of base) : 26248.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
36 total methods with Code Size differences (29 improved, 7 regressed).
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 368823570 (overridden on cmd)
Total bytes of diff: 368821528 (overridden on cmd)
Total bytes of delta: -2042 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
78 : 229120.dasm (2.02 % of base)
74 : 2966.dasm (1.21 % of base)
74 : 2987.dasm (1.21 % of base)
47 : 183559.dasm (335.71 % of base)
31 : 567640.dasm (2.08 % of base)
27 : 570642.dasm (1.62 % of base)
26 : 457074.dasm (7.32 % of base)
23 : 242786.dasm (2.68 % of base)
19 : 281310.dasm (2.62 % of base)
13 : 166638.dasm (1.74 % of base)
13 : 168912.dasm (1.74 % of base)
13 : 166282.dasm (1.74 % of base)
7 : 243887.dasm (1.74 % of base)
6 : 566327.dasm (0.55 % of base)
3 : 281630.dasm (1.18 % of base)
3 : 302429.dasm (0.72 % of base)
1 : 437422.dasm (0.28 % of base)
Top file improvements (bytes):
-44 : 228568.dasm (-20.95 % of base)
-42 : 377.dasm (-4.07 % of base)
-37 : 190808.dasm (-4.65 % of base)
-36 : 186311.dasm (-5.74 % of base)
-34 : 187754.dasm (-14.11 % of base)
-29 : 302281.dasm (-3.35 % of base)
-29 : 153.dasm (-3.06 % of base)
-29 : 376.dasm (-3.09 % of base)
-28 : 235043.dasm (-24.78 % of base)
-26 : 168749.dasm (-1.55 % of base)
-26 : 173081.dasm (-9.89 % of base)
-26 : 173104.dasm (-9.89 % of base)
-26 : 188963.dasm (-6.99 % of base)
-26 : 189649.dasm (-14.77 % of base)
-26 : 190834.dasm (-7.85 % of base)
-25 : 424327.dasm (-12.44 % of base)
-25 : 145569.dasm (-26.04 % of base)
-25 : 167005.dasm (-23.58 % of base)
-25 : 236357.dasm (-26.04 % of base)
-25 : 306809.dasm (-33.78 % of base)
60 total files with Code Size differences (43 improved, 17 regressed), 19 unchanged.
Top method regressions (bytes):
78 (2.02 % of base) : 229120.dasm - Test_throw2dimarray.App:Main():int (FullOpts)
74 (1.21 % of base) : 2966.dasm - Program:TestCase0003() (FullOpts)
74 (1.21 % of base) : 2987.dasm - Program:TestCase0003() (FullOpts)
47 (335.71 % of base) : 183559.dasm - T:TestEntryPoint():int (FullOpts)
31 (2.08 % of base) : 567640.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
27 (1.62 % of base) : 570642.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
26 (7.32 % of base) : 457074.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
23 (2.68 % of base) : 242786.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
19 (2.62 % of base) : 281310.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
13 (1.74 % of base) : 166638.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.74 % of base) : 168912.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.74 % of base) : 166282.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
7 (1.74 % of base) : 243887.dasm - Test.DD:Main1() (FullOpts)
6 (0.55 % of base) : 566327.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey,System.__Canon]):System.__Canon:this (Tier1)
3 (1.18 % of base) : 281630.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
3 (0.72 % of base) : 302429.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
1 (0.28 % of base) : 437422.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (bytes):
-44 (-20.95 % of base) : 228568.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-42 (-4.07 % of base) : 377.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
-37 (-4.65 % of base) : 190808.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
-36 (-5.74 % of base) : 186311.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-34 (-14.11 % of base) : 187754.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-29 (-3.09 % of base) : 376.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-29 (-3.06 % of base) : 153.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
-29 (-3.35 % of base) : 302281.dasm - System.Xml.XmlNode:AppendChild(System.Xml.XmlNode):System.Xml.XmlNode:this (FullOpts)
-28 (-24.78 % of base) : 235043.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-26 (-14.77 % of base) : 189649.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-26 (-1.55 % of base) : 168749.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)
-26 (-9.89 % of base) : 173104.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-9.89 % of base) : 173081.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-26 (-6.99 % of base) : 188963.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
-26 (-7.85 % of base) : 190834.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
-25 (-33.78 % of base) : 306809.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-25 (-12.44 % of base) : 424327.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
-25 (-26.04 % of base) : 145569.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-25 (-26.04 % of base) : 236357.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-25 (-23.58 % of base) : 167005.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
Top method regressions (percentages):
47 (335.71 % of base) : 183559.dasm - T:TestEntryPoint():int (FullOpts)
26 (7.32 % of base) : 457074.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<>c:<.cctor>b__10_0(System.Object):this (Tier1)
23 (2.68 % of base) : 242786.dasm - AA`6[byte,ubyte,uint,uint,long,ubyte]:Static2(ulong,short,byref,byref):ushort[] (FullOpts)
19 (2.62 % of base) : 281310.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
31 (2.08 % of base) : 567640.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
78 (2.02 % of base) : 229120.dasm - Test_throw2dimarray.App:Main():int (FullOpts)
7 (1.74 % of base) : 243887.dasm - Test.DD:Main1() (FullOpts)
13 (1.74 % of base) : 166638.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.74 % of base) : 168912.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
13 (1.74 % of base) : 166282.dasm - DisabledRuntimeMarshalling.PInvokeAssemblyMarshallingDisabled.PInvokes:<Varargs_NotSupported>g__AssertThrowsCorrectException|6_1(System.Action) (FullOpts)
27 (1.62 % of base) : 570642.dasm - ILCompiler.TypeExtensions:<CompareTypesForEquality>g__AreGuaranteedToRepresentDifferentTypes|13_0(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte (Tier1)
74 (1.21 % of base) : 2966.dasm - Program:TestCase0003() (FullOpts)
74 (1.21 % of base) : 2987.dasm - Program:TestCase0003() (FullOpts)
3 (1.18 % of base) : 281630.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
3 (0.72 % of base) : 302429.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
6 (0.55 % of base) : 566327.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey,System.__Canon]):System.__Canon:this (Tier1)
1 (0.28 % of base) : 437422.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method improvements (percentages):
-25 (-33.78 % of base) : 306809.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-22 (-32.35 % of base) : 301159.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-13 (-31.71 % of base) : 204589.dasm - Program:CastToArray(System.Object):int[] (Tier1)
-25 (-26.04 % of base) : 145569.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-25 (-26.04 % of base) : 236357.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-28 (-24.78 % of base) : 235043.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
-25 (-23.58 % of base) : 167005.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
-44 (-20.95 % of base) : 228568.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
-17 (-20.24 % of base) : 282436.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
-13 (-19.12 % of base) : 167402.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-13 (-17.33 % of base) : 241303.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
-15 (-16.48 % of base) : 186521.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
-20 (-15.87 % of base) : 456683.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
-26 (-14.77 % of base) : 189649.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-21 (-14.58 % of base) : 173102.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-21 (-14.58 % of base) : 173080.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-34 (-14.11 % of base) : 187754.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-21 (-13.13 % of base) : 166900.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-16 (-13.11 % of base) : 303120.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (FullOpts)
-14 (-12.84 % of base) : 566266.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
libraries.crossgen2.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39443487 (overridden on cmd)
Total bytes of diff: 39412885 (overridden on cmd)
Total bytes of delta: -30602 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1 : 192887.dasm (0.29 % of base)
1 : 142393.dasm (0.21 % of base)
Top file improvements (bytes):
-208 : 142597.dasm (-14.04 % of base)
-201 : 189232.dasm (-4.21 % of base)
-195 : 142596.dasm (-13.97 % of base)
-191 : 158016.dasm (-28.51 % of base)
-191 : 158012.dasm (-29.48 % of base)
-182 : 142594.dasm (-13.89 % of base)
-169 : 142592.dasm (-13.81 % of base)
-158 : 7549.dasm (-20.73 % of base)
-158 : 7550.dasm (-20.23 % of base)
-156 : 142590.dasm (-13.71 % of base)
-143 : 142588.dasm (-13.59 % of base)
-143 : 159962.dasm (-17.52 % of base)
-140 : 136737.dasm (-11.60 % of base)
-130 : 142586.dasm (-13.46 % of base)
-122 : 165730.dasm (-10.06 % of base)
-121 : 158014.dasm (-23.68 % of base)
-117 : 142584.dasm (-13.30 % of base)
-114 : 158007.dasm (-23.65 % of base)
-114 : 189291.dasm (-5.27 % of base)
-113 : 3994.dasm (-47.08 % of base)
83 total files with Code Size differences (81 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
1 (0.29 % of base) : 192887.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
1 (0.21 % of base) : 142393.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)
Top method improvements (bytes):
-208 (-14.04 % of base) : 142597.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)
-201 (-4.21 % of base) : 189232.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-195 (-13.97 % of base) : 142596.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)
-191 (-29.48 % of base) : 158012.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-191 (-28.51 % of base) : 158016.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)
-182 (-13.89 % of base) : 142594.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)
-169 (-13.81 % of base) : 142592.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)
-158 (-20.73 % of base) : 7549.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-158 (-20.23 % of base) : 7550.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-156 (-13.71 % of base) : 142590.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 (-13.59 % of base) : 142588.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)
-143 (-17.52 % of base) : 159962.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-140 (-11.60 % of base) : 136737.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-130 (-13.46 % of base) : 142586.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)
-122 (-10.06 % of base) : 165730.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.__Canon],ubyte) (FullOpts)
-121 (-23.68 % of base) : 158014.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-117 (-13.30 % of base) : 142584.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)
-114 (-23.65 % of base) : 158007.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-114 (-5.27 % of base) : 189291.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)
-113 (-47.08 % of base) : 3994.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
Top method regressions (percentages):
1 (0.29 % of base) : 192887.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
1 (0.21 % of base) : 142393.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)
Top method improvements (percentages):
-113 (-47.08 % of base) : 3994.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-102 (-39.69 % of base) : 4009.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
-25 (-39.68 % of base) : 7995.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
-25 (-39.68 % of base) : 7518.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-39.68 % of base) : 189924.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-37.88 % of base) : 136801.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
-25 (-37.88 % of base) : 183785.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-25 (-37.88 % of base) : 209957.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
-25 (-37.88 % of base) : 214076.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-25 (-35.21 % of base) : 231866.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)
-25 (-35.21 % of base) : 166579.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
-23 (-34.33 % of base) : 189946.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-51 (-32.48 % of base) : 189304.dasm - System.Text.Json.Serialization.Converters.ImmutableDictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-51 (-32.48 % of base) : 189274.dasm - System.Text.Json.Serialization.Converters.ImmutableEnumerableOfTConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-35 (-31.53 % of base) : 189283.dasm - System.Text.Json.Serialization.Converters.FSharpListConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-35 (-31.53 % of base) : 189308.dasm - System.Text.Json.Serialization.Converters.FSharpMapConverter`3[System.__Canon,System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-35 (-31.53 % of base) : 189284.dasm - System.Text.Json.Serialization.Converters.FSharpSetConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
-25 (-31.25 % of base) : 216710.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
-25 (-31.25 % of base) : 22054.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
-25 (-30.86 % of base) : 196293.dasm - Newtonsoft.Json.Utilities.LateBoundReflectionDelegateFactory+<>c__DisplayClass5_0`1[System.__Canon]:<CreateDefaultConstructor>b__0():System.__Canon:this (FullOpts)
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 44521914 (overridden on cmd)
Total bytes of diff: 44511124 (overridden on cmd)
Total bytes of delta: -10790 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
65 : 122684.dasm (3.20 % of base)
34 : 115845.dasm (1.93 % of base)
19 : 271924.dasm (2.57 % of base)
11 : 207677.dasm (4.68 % of base)
8 : 199612.dasm (0.89 % of base)
8 : 169847.dasm (3.32 % of base)
8 : 17745.dasm (2.43 % of base)
8 : 199602.dasm (0.25 % of base)
6 : 271607.dasm (0.58 % of base)
6 : 271894.dasm (0.54 % of base)
5 : 218052.dasm (4.95 % of base)
5 : 219651.dasm (4.95 % of base)
3 : 230201.dasm (0.63 % of base)
3 : 173287.dasm (1.18 % of base)
3 : 178859.dasm (0.72 % of base)
2 : 256317.dasm (1.82 % of base)
2 : 263305.dasm (1.25 % of base)
2 : 213142.dasm (1.82 % of base)
2 : 307352.dasm (1.82 % of base)
1 : 247821.dasm (0.22 % of base)
Top file improvements (bytes):
-425 : 268901.dasm (-23.57 % of base)
-148 : 298692.dasm (-25.83 % of base)
-143 : 100750.dasm (-12.79 % of base)
-139 : 166846.dasm (-9.97 % of base)
-126 : 146039.dasm (-38.65 % of base)
-116 : 145394.dasm (-8.06 % of base)
-84 : 15487.dasm (-13.15 % of base)
-84 : 15494.dasm (-12.75 % of base)
-77 : 172043.dasm (-1.74 % of base)
-64 : 248966.dasm (-1.71 % of base)
-57 : 33440.dasm (-7.77 % of base)
-54 : 15651.dasm (-11.02 % of base)
-54 : 15660.dasm (-10.89 % of base)
-53 : 211936.dasm (-0.85 % of base)
-51 : 300407.dasm (-14.09 % of base)
-46 : 18685.dasm (-5.55 % of base)
-45 : 145960.dasm (-29.22 % of base)
-44 : 273438.dasm (-19.30 % of base)
-44 : 17448.dasm (-7.65 % of base)
-42 : 296249.dasm (-13.04 % of base)
70 total files with Code Size differences (50 improved, 20 regressed), 19 unchanged.
Top method regressions (bytes):
65 (3.20 % of base) : 122684.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
34 (1.93 % of base) : 115845.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
19 (2.57 % of base) : 271924.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
11 (4.68 % of base) : 207677.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
8 (0.89 % of base) : 199612.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:GetDeletedSynthesizedMethods(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLambdaInfo]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CodeGen.DebugId,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal]]:this (FullOpts)
8 (0.25 % of base) : 199602.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
8 (3.32 % of base) : 169847.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
8 (2.43 % of base) : 17745.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
6 (0.58 % of base) : 271607.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
6 (0.54 % of base) : 271894.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
5 (4.95 % of base) : 218052.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
5 (4.95 % of base) : 219651.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
3 (1.18 % of base) : 173287.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
3 (0.72 % of base) : 178859.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
3 (0.63 % of base) : 230201.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
2 (1.25 % of base) : 263305.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
2 (1.82 % of base) : 213142.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
2 (1.82 % of base) : 256317.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
2 (1.82 % of base) : 307352.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
1 (0.22 % of base) : 247821.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWriteDataExtensionProperty(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
Top method improvements (bytes):
-425 (-23.57 % of base) : 268901.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-148 (-25.83 % of base) : 298692.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-143 (-12.79 % of base) : 100750.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-139 (-9.97 % of base) : 166846.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-126 (-38.65 % of base) : 146039.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-116 (-8.06 % of base) : 145394.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
-84 (-13.15 % of base) : 15487.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-84 (-12.75 % of base) : 15494.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
-77 (-1.74 % of base) : 172043.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
-64 (-1.71 % of base) : 248966.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
-57 (-7.77 % of base) : 33440.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
-54 (-10.89 % of base) : 15660.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-54 (-11.02 % of base) : 15651.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
-53 (-0.85 % of base) : 211936.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GenerateInterfaceViewProxyType(System.Type):System.Type (FullOpts)
-51 (-14.09 % of base) : 300407.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)
-46 (-5.55 % of base) : 18685.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
-45 (-29.22 % of base) : 145960.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-44 (-19.30 % of base) : 273438.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider:GetMetadataValue[System.__Canon](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.ComponentModel.DefaultValueAttribute):System.__Canon (FullOpts)
-44 (-7.65 % of base) : 17448.dasm - System.Data.XDRSchema:HandleTypeNode(System.Xml.XmlElement,System.Data.DataTable,System.Collections.ArrayList):this (FullOpts)
-42 (-13.04 % of base) : 296249.dasm - System.Reflection.Context.Custom.CustomParameterInfo:GetCustomAttributes(ubyte):System.Object[]:this (FullOpts)
Top method regressions (percentages):
5 (4.95 % of base) : 218052.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
5 (4.95 % of base) : 219651.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
11 (4.68 % of base) : 207677.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
8 (3.32 % of base) : 169847.dasm - Newtonsoft.Json.Utilities.DictionaryWrapper`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
65 (3.20 % of base) : 122684.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
19 (2.57 % of base) : 271924.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
8 (2.43 % of base) : 17745.dasm - System.Data.ColumnTypeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
34 (1.93 % of base) : 115845.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
2 (1.82 % of base) : 213142.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
2 (1.82 % of base) : 256317.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
2 (1.82 % of base) : 307352.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:GetHashCode(System.Object):int:this (FullOpts)
2 (1.25 % of base) : 263305.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
3 (1.18 % of base) : 173287.dasm - Internal.TypeSystem.TypeDesc:get_TypeHasCharacteristicsRequiredToBeTypeEquivalent():ubyte:this (FullOpts)
8 (0.89 % of base) : 199612.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:GetDeletedSynthesizedMethods(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLambdaInfo]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CodeGen.DebugId,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal]]:this (FullOpts)
3 (0.72 % of base) : 178859.dasm - Microsoft.Build.Logging.LoggerDescription:CreateForwardingLogger():Microsoft.Build.Framework.IForwardingLogger:this (FullOpts)
3 (0.63 % of base) : 230201.dasm - System.Net.Http.Http3RequestStream:HandleReadResponseContentException(System.Exception,System.Threading.CancellationToken):this (FullOpts)
6 (0.58 % of base) : 271607.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
6 (0.54 % of base) : 271894.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
8 (0.25 % of base) : 199602.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
1 (0.22 % of base) : 247821.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWriteDataExtensionProperty(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-126 (-38.65 % of base) : 146039.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
-13 (-32.50 % of base) : 15207.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
-13 (-32.50 % of base) : 246352.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-31.25 % of base) : 149502.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-20 (-31.25 % of base) : 189444.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-25 (-30.49 % of base) : 171447.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-45 (-29.22 % of base) : 145960.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-25 (-29.07 % of base) : 273427.dasm - System.Composition.Hosting.Util.MethodInfoExtensions:CreateStaticDelegate[System.__Canon](System.Reflection.MethodInfo):System.__Canon (FullOpts)
-18 (-28.57 % of base) : 289479.dasm - System.Net.Dns:GetHostAddressesCore(System.Net.IPAddress,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
-18 (-28.57 % of base) : 289476.dasm - System.Net.Dns:GetHostAddressesCore(System.String,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
-25 (-28.41 % of base) : 167865.dasm - Microsoft.VisualBasic.Conversion:CTypeDynamic[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-27.78 % of base) : 262051.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
-25 (-27.78 % of base) : 168697.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
-25 (-27.78 % of base) : 171455.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
-18 (-27.27 % of base) : 22287.dasm - System.Data.Common.DbDataReader:GetFieldValue[System.__Canon](int):System.__Canon:this (FullOpts)
-20 (-25.97 % of base) : 307231.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-25.97 % of base) : 307245.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-148 (-25.83 % of base) : 298692.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
-25 (-25.77 % of base) : 168952.dasm - Newtonsoft.Json.JsonSerializer:Deserialize[System.__Canon](Newtonsoft.Json.JsonReader):System.__Canon:this (FullOpts)
-13 (-25.49 % of base) : 273543.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)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 240228942 (overridden on cmd)
Total bytes of diff: 240210517 (overridden on cmd)
Total bytes of delta: -18425 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
120 : 407620.dasm (2.53 % of base)
96 : 406967.dasm (2.46 % of base)
52 : 58847.dasm (1.03 % of base)
51 : 297276.dasm (2.87 % of base)
50 : 91389.dasm (1.02 % of base)
47 : 67101.dasm (1.62 % of base)
46 : 621089.dasm (1.12 % of base)
44 : 633787.dasm (1.80 % of base)
37 : 483307.dasm (0.93 % of base)
35 : 612112.dasm (0.82 % of base)
28 : 312186.dasm (0.80 % of base)
28 : 296844.dasm (0.82 % of base)
27 : 157485.dasm (4.75 % of base)
27 : 165488.dasm (0.68 % of base)
27 : 89351.dasm (1.02 % of base)
25 : 413309.dasm (6.38 % of base)
24 : 324232.dasm (4.88 % of base)
22 : 123453.dasm (0.63 % of base)
22 : 161524.dasm (6.47 % of base)
22 : 612147.dasm (5.43 % of base)
Top file improvements (bytes):
-150 : 570963.dasm (-1.56 % of base)
-115 : 262456.dasm (-3.45 % of base)
-108 : 519640.dasm (-10.18 % of base)
-99 : 664541.dasm (-2.85 % of base)
-85 : 159953.dasm (-2.38 % of base)
-70 : 257563.dasm (-1.87 % of base)
-70 : 586131.dasm (-0.71 % of base)
-69 : 107137.dasm (-1.87 % of base)
-69 : 116428.dasm (-1.91 % of base)
-69 : 172682.dasm (-1.91 % of base)
-69 : 203637.dasm (-1.90 % of base)
-69 : 533882.dasm (-1.91 % of base)
-69 : 604585.dasm (-2.03 % of base)
-69 : 187557.dasm (-1.91 % of base)
-69 : 286932.dasm (-1.93 % of base)
-69 : 351521.dasm (-1.92 % of base)
-69 : 371505.dasm (-2.03 % of base)
-69 : 375438.dasm (-1.90 % of base)
-69 : 449237.dasm (-1.91 % of base)
-67 : 364045.dasm (-1.86 % of base)
83 total files with Code Size differences (53 improved, 30 regressed), 17 unchanged.
Top method regressions (bytes):
120 (2.53 % of base) : 407620.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Tier1)
96 (2.46 % of base) : 406967.dasm - XmlSerializerTests:SerializeAndDeserialize[System.__Canon](System.__Canon,System.String,System.Func`1[System.Xml.Serialization.XmlSerializer],ubyte,System.Xml.Serialization.XmlSerializerNamespaces):System.__Canon (Tier1)
52 (1.03 % of base) : 58847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForUnsafeSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
51 (2.87 % of base) : 297276.dasm - System.Security.AccessControl.ObjectSecurity:GetSecurityDescriptorBinaryForm():ubyte[]:this (Tier1)
50 (1.02 % of base) : 91389.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForUnsafeSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
47 (1.62 % of base) : 67101.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:DeriveUseSiteDiagnosticFromTypeArguments(byref):ubyte:this (Tier1)
46 (1.12 % of base) : 621089.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
44 (1.80 % of base) : 633787.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:WellKnownMember(int,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
37 (0.93 % of base) : 483307.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
35 (0.82 % of base) : 612112.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,int,int,System.Nullable`1[int]):ubyte:this (Tier1)
28 (0.80 % of base) : 312186.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
28 (0.82 % of base) : 296844.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
27 (0.68 % of base) : 165488.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasAnyBaseInterfaceConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):ubyte:this (Tier1)
27 (1.02 % of base) : 89351.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DeriveUseSiteInfoFromParameters(byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):ubyte:this (Tier1)
27 (4.75 % of base) : 157485.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
25 (6.38 % of base) : 413309.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
24 (4.88 % of base) : 324232.dasm - System.Threading.ManualResetEventSlim:CancellationTokenCallback(System.Object) (Tier1)
22 (6.47 % of base) : 161524.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
22 (5.43 % of base) : 612147.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
22 (0.63 % of base) : 123453.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method improvements (bytes):
-150 (-1.56 % of base) : 570963.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-115 (-3.45 % of base) : 262456.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-108 (-10.18 % of base) : 519640.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
-99 (-2.85 % of base) : 664541.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-85 (-2.38 % of base) : 159953.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-70 (-0.71 % of base) : 586131.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-70 (-1.87 % of base) : 257563.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.87 % of base) : 107137.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.91 % of base) : 116428.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.91 % of base) : 172682.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.90 % of base) : 203637.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.91 % of base) : 533882.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-2.03 % of base) : 604585.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.91 % of base) : 187557.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.93 % of base) : 286932.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.92 % of base) : 351521.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-2.03 % of base) : 371505.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.90 % of base) : 375438.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-69 (-1.91 % of base) : 449237.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
-67 (-1.86 % of base) : 364045.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
Top method regressions (percentages):
13 (11.21 % of base) : 433858.dasm - OLEDB.Test.ModuleCore.CTestCase:get_TestModule():OLEDB.Test.ModuleCore.CTestModule:this (Tier1)
19 (9.50 % of base) : 245396.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
15 (7.21 % of base) : 429068.dasm - System.Xml.Schema.XsdBuilder:BuildIdentityConstraint_Refer(System.Xml.Schema.XsdBuilder,System.String) (Tier1)
22 (6.47 % of base) : 161524.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
25 (6.38 % of base) : 413309.dasm - System.Xml.XPath.XNodeNavigator:GetNextNamespaceDeclarationGlobal(System.Xml.Linq.XAttribute):System.Xml.Linq.XAttribute (Tier1)
13 (6.16 % of base) : 659872.dasm - System.Threading.Tasks.TaskFactory`1+<>c[int]:<ContinueWhenAllImpl>b__57_0(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task[]],System.Object):int:this (Tier1)
10 (5.75 % of base) : 659689.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAllImpl>b__57_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task[]],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
22 (5.43 % of base) : 612147.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (Tier1)
14 (5.34 % of base) : 373920.dasm - System.Threading.CancellationTokenSource:Invoke(System.Delegate,System.Object,System.Threading.CancellationTokenSource) (Tier1)
24 (4.88 % of base) : 324232.dasm - System.Threading.ManualResetEventSlim:CancellationTokenCallback(System.Object) (Tier1)
27 (4.75 % of base) : 157485.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],ubyte):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:this (Tier1)
7 (4.02 % of base) : 378581.dasm - System.Net.Security.SslStream:MakeEx(System.Security.Cryptography.X509Certificates.X509Certificate):System.Security.Cryptography.X509Certificates.X509Certificate2 (Tier1)
18 (3.98 % of base) : 92819.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 (Tier1)
6 (2.96 % of base) : 660111.dasm - System.Threading.Tasks.TaskFactory`1+<>c[System.Threading.Tasks.VoidTaskResult]:<ContinueWhenAnyImpl>b__66_1(System.Threading.Tasks.Task`1[System.Threading.Tasks.Task],System.Object):System.Threading.Tasks.VoidTaskResult:this (Tier1)
51 (2.87 % of base) : 297276.dasm - System.Security.AccessControl.ObjectSecurity:GetSecurityDescriptorBinaryForm():ubyte[]:this (Tier1)
120 (2.53 % of base) : 407620.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Tier1)
96 (2.46 % of base) : 406967.dasm - XmlSerializerTests:SerializeAndDeserialize[System.__Canon](System.__Canon,System.String,System.Func`1[System.Xml.Serialization.XmlSerializer],ubyte,System.Xml.Serialization.XmlSerializerNamespaces):System.__Canon (Tier1)
44 (1.80 % of base) : 633787.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:WellKnownMember(int,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
47 (1.62 % of base) : 67101.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:DeriveUseSiteDiagnosticFromTypeArguments(byref):ubyte:this (Tier1)
15 (1.43 % of base) : 245129.dasm - System.Xml.Schema.Preprocessor:PreprocessElementContent(System.Xml.Schema.XmlSchemaElement):this (Tier1)
Top method improvements (percentages):
-35 (-36.08 % of base) : 533662.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
-25 (-33.78 % of base) : 3564.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
-18 (-32.73 % of base) : 60015.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
-13 (-32.50 % of base) : 587871.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-25 (-27.78 % of base) : 119291.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-25 (-27.47 % of base) : 48633.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
-32 (-27.12 % of base) : 408993.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
-50 (-26.88 % of base) : 164954.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-18 (-26.47 % of base) : 247926.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
-25 (-26.04 % of base) : 117463.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
-25 (-26.04 % of base) : 189716.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (Tier1)
-20 (-25.97 % of base) : 118849.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
-20 (-25.97 % of base) : 117901.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
-24 (-24.49 % of base) : 54835.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (Tier1)
-23 (-23.96 % of base) : 118357.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
-25 (-23.58 % of base) : 117890.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-25 (-23.58 % of base) : 301051.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
-18 (-23.38 % of base) : 58730.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-18 (-23.08 % of base) : 619820.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
-32 (-23.02 % of base) : 91941.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 107828666 (overridden on cmd)
Total bytes of diff: 107814128 (overridden on cmd)
Total bytes of delta: -14538 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
149 : 214856.dasm (3.82 % of base)
148 : 236277.dasm (9.15 % of base)
117 : 318227.dasm (2.56 % of base)
91 : 189157.dasm (5.74 % of base)
80 : 94848.dasm (3.92 % of base)
33 : 95612.dasm (122.22 % of base)
30 : 94271.dasm (60.00 % of base)
30 : 95628.dasm (60.00 % of base)
19 : 4006.dasm (2.62 % of base)
16 : 193554.dasm (3.07 % of base)
14 : 189406.dasm (2.97 % of base)
11 : 70003.dasm (1.51 % of base)
11 : 73115.dasm (4.68 % of base)
10 : 80794.dasm (1.01 % of base)
7 : 207673.dasm (1.05 % of base)
6 : 78384.dasm (0.54 % of base)
5 : 100341.dasm (4.95 % of base)
5 : 99950.dasm (4.95 % of base)
3 : 38479.dasm (0.82 % of base)
3 : 38487.dasm (0.77 % of base)
Top file improvements (bytes):
-425 : 66019.dasm (-23.57 % of base)
-259 : 216281.dasm (-16.55 % of base)
-259 : 201703.dasm (-16.55 % of base)
-255 : 174917.dasm (-14.42 % of base)
-238 : 174911.dasm (-13.58 % of base)
-220 : 174035.dasm (-11.03 % of base)
-169 : 216332.dasm (-12.70 % of base)
-169 : 200594.dasm (-12.70 % of base)
-153 : 174913.dasm (-11.65 % of base)
-144 : 14462.dasm (-13.15 % of base)
-122 : 174909.dasm (-6.95 % of base)
-108 : 207074.dasm (-6.96 % of base)
-108 : 205717.dasm (-6.96 % of base)
-108 : 210269.dasm (-8.53 % of base)
-108 : 174914.dasm (-8.53 % of base)
-105 : 67666.dasm (-11.80 % of base)
-103 : 245322.dasm (-3.63 % of base)
-88 : 23694.dasm (-3.74 % of base)
-87 : 174528.dasm (-6.52 % of base)
-85 : 174916.dasm (-9.10 % of base)
75 total files with Code Size differences (52 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
149 (3.82 % of base) : 214856.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)
148 (9.15 % of base) : 236277.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
117 (2.56 % of base) : 318227.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)
91 (5.74 % of base) : 189157.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
80 (3.92 % of base) : 94848.dasm - System.Data.DataSet:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
33 (122.22 % of base) : 95612.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
30 (60.00 % of base) : 94271.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
30 (60.00 % of base) : 95628.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
19 (2.62 % of base) : 4006.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
16 (3.07 % of base) : 193554.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
14 (2.97 % of base) : 189406.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
11 (1.51 % of base) : 70003.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.SmallFrozenSet`1+GSW[System.__Canon]]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
11 (4.68 % of base) : 73115.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
10 (1.01 % of base) : 80794.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
7 (1.05 % of base) : 207673.dasm - System.Runtime.Serialization.SchemaExporter:ReprocessAll(System.Xml.Schema.XmlSchemaSet) (FullOpts)
6 (0.54 % of base) : 78384.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
5 (4.95 % of base) : 100341.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
5 (4.95 % of base) : 99950.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
3 (0.82 % of base) : 38479.dasm - FluentAssertions.Primitives.BooleanAssertions`1[System.__Canon]:Be(ubyte,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
3 (0.77 % of base) : 38487.dasm - FluentAssertions.Primitives.NullableBooleanAssertions`1[System.__Canon]:Be(System.Nullable`1[ubyte],System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
Top method improvements (bytes):
-425 (-23.57 % of base) : 66019.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
-259 (-16.55 % of base) : 216281.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)
-259 (-16.55 % of base) : 201703.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)
-255 (-14.42 % of base) : 174917.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
-238 (-13.58 % of base) : 174911.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
-220 (-11.03 % of base) : 174035.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
-169 (-12.70 % of base) : 216332.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-169 (-12.70 % of base) : 200594.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
-153 (-11.65 % of base) : 174913.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
-144 (-13.15 % of base) : 14462.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)
-122 (-6.95 % of base) : 174909.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
-108 (-6.96 % of base) : 207074.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-108 (-6.96 % of base) : 205717.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
-108 (-8.53 % of base) : 174914.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
-108 (-8.53 % of base) : 210269.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)
-105 (-11.80 % of base) : 67666.dasm - System.CodeDom.Compiler.Tests.CodeGenerationTests:GenerateCode(System.CodeDom.CodeObject,System.CodeDom.Compiler.CodeDomProvider):System.String (FullOpts)
-103 (-3.63 % of base) : 245322.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)
-88 (-3.74 % of base) : 23694.dasm - Microsoft.CodeAnalysis.LanguageService.AbstractDeclaredSymbolInfoFactoryService`10[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:AddDeclaredSymbolInfos(Microsoft.CodeAnalysis.SyntaxNode,System.__Canon,Roslyn.Utilities.StringTable,System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FindSymbols.DeclaredSymbolInfo],System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]],System.String,System.String,System.Threading.CancellationToken):this (FullOpts)
-87 (-6.52 % of base) : 174528.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterAliasedTestType:Write2_AliasedTestType(System.String,System.String,AliasedTestType,ubyte,ubyte):this (FullOpts)
-85 (-9.10 % of base) : 174916.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (FullOpts)
Top method regressions (percentages):
33 (122.22 % of base) : 95612.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
30 (60.00 % of base) : 94271.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
30 (60.00 % of base) : 95628.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
148 (9.15 % of base) : 236277.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
91 (5.74 % of base) : 189157.dasm - System.Reflection.Tests.GetCustomAttributes_Compat:GetCustomAttributes_thisAsm():this (FullOpts)
5 (4.95 % of base) : 100341.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
5 (4.95 % of base) : 99950.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
11 (4.68 % of base) : 73115.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
80 (3.92 % of base) : 94848.dasm - System.Data.DataSet:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
149 (3.82 % of base) : 214856.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)
16 (3.07 % of base) : 193554.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
14 (2.97 % of base) : 189406.dasm - System.Reflection.Tests.ConstructorCommonTests:Invoke_OneDimensionalArray():this (FullOpts)
19 (2.62 % of base) : 4006.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
117 (2.56 % of base) : 318227.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)
2 (1.82 % of base) : 86302.dasm - Microsoft.Internal.Collections.CollectionServices+CollectionOfObject`1[System.__Canon]:Add(System.Object):this (FullOpts)
11 (1.51 % of base) : 70003.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.SmallFrozenSet`1+GSW[System.__Canon]]:ComparersAreCompatible(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (FullOpts)
3 (1.33 % of base) : 38353.dasm - FluentAssertions.Primitives.StringAssertions`1[System.__Canon]:Be(System.String,System.String,System.Object[]):FluentAssertions.AndConstraint`1[System.__Canon]:this (FullOpts)
2 (1.25 % of base) : 38957.dasm - Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1[System.__Canon]:CreateServiceProvider(System.Object):System.IServiceProvider:this (FullOpts)
7 (1.05 % of base) : 207673.dasm - System.Runtime.Serialization.SchemaExporter:ReprocessAll(System.Xml.Schema.XmlSchemaSet) (FullOpts)
10 (1.01 % of base) : 80794.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
Top method improvements (percentages):
-13 (-32.50 % of base) : 35556.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
-13 (-32.50 % of base) : 149919.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-30.49 % of base) : 21253.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
-13 (-30.23 % of base) : 31049.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)
-45 (-29.22 % of base) : 174349.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
-26 (-27.37 % of base) : 174946.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
-18 (-27.27 % of base) : 10159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitListElement[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
-18 (-27.27 % of base) : 97510.dasm - System.Data.Common.DbDataReader:GetFieldValue[System.__Canon](int):System.__Canon:this (FullOpts)
-32 (-27.12 % of base) : 63234.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
-25 (-26.88 % of base) : 36740.dasm - Grace.DependencyInjection.Impl.BaseExportLocatorScope:Locate[System.__Canon]():System.__Canon:this (FullOpts)
-51 (-26.15 % of base) : 3315.dasm - Microsoft.VisualStudio.Composition.ExportProvider:CastValueTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-25 (-26.04 % of base) : 17397.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
-25 (-26.04 % of base) : 17464.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (FullOpts)
-20 (-25.97 % of base) : 77610.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
-20 (-25.97 % of base) : 133804.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
-13 (-25.49 % of base) : 91588.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)
-18 (-25.35 % of base) : 48151.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-18 (-25.35 % of base) : 49392.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-18 (-25.00 % of base) : 4963.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-13 (-25.00 % of base) : 141059.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9790351 (overridden on cmd)
Total bytes of diff: 9787549 (overridden on cmd)
Total bytes of delta: -2802 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
22 : 4856.dasm (6.09 % of base)
Top file improvements (bytes):
-166 : 35455.dasm (-31.44 % of base)
-103 : 36185.dasm (-30.93 % of base)
-51 : 35238.dasm (-16.19 % of base)
-46 : 28157.dasm (-5.23 % of base)
-45 : 33245.dasm (-9.43 % of base)
-43 : 34874.dasm (-22.87 % of base)
-42 : 30983.dasm (-6.06 % of base)
-42 : 36608.dasm (-18.50 % of base)
-41 : 35451.dasm (-12.97 % of base)
-41 : 8364.dasm (-30.15 % of base)
-40 : 36789.dasm (-16.81 % of base)
-40 : 6624.dasm (-3.01 % of base)
-40 : 9727.dasm (-7.34 % of base)
-39 : 34849.dasm (-2.20 % of base)
-36 : 19262.dasm (-5.74 % of base)
-34 : 23161.dasm (-14.11 % of base)
-31 : 34844.dasm (-19.25 % of base)
-31 : 11813.dasm (-5.81 % of base)
-30 : 33003.dasm (-2.40 % of base)
-28 : 36062.dasm (-14.00 % of base)
57 total files with Code Size differences (56 improved, 1 regressed), 10 unchanged.
Top method regressions (bytes):
22 (6.09 % of base) : 4856.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
Top method improvements (bytes):
-166 (-31.44 % of base) : 35455.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)
-103 (-30.93 % of base) : 36185.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-51 (-16.19 % of base) : 35238.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)
-46 (-5.23 % of base) : 28157.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-45 (-9.43 % of base) : 33245.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)
-43 (-22.87 % of base) : 34874.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-42 (-6.06 % of base) : 30983.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)
-42 (-18.50 % of base) : 36608.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-41 (-30.15 % of base) : 8364.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-41 (-12.97 % of base) : 35451.dasm - System.Management.Automation.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,ubyte,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-40 (-7.34 % of base) : 9727.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)
-40 (-3.01 % of base) : 6624.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)
-40 (-16.81 % of base) : 36789.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-39 (-2.20 % of base) : 34849.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)
-36 (-5.74 % of base) : 19262.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
-34 (-14.11 % of base) : 23161.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
-31 (-5.81 % of base) : 11813.dasm - FSharp.Compiler.ParseAndCheckInputs:GetScopedPragmasForHashDirective(FSharp.Compiler.Syntax.ParsedHashDirective):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma] (FullOpts)
-31 (-19.25 % of base) : 34844.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-30 (-2.40 % of base) : 33003.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
-28 (-14.00 % of base) : 36062.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
Top method regressions (percentages):
22 (6.09 % of base) : 4856.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
Top method improvements (percentages):
-25 (-33.78 % of base) : 677.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-166 (-31.44 % of base) : 35455.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)
-103 (-30.93 % of base) : 36185.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-41 (-30.15 % of base) : 8364.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
-25 (-29.07 % of base) : 21741.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-18 (-27.27 % of base) : 35607.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
-13 (-25.49 % of base) : 35533.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
-18 (-25.35 % of base) : 20046.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
-23 (-23.71 % of base) : 10076.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
-43 (-22.87 % of base) : 34874.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-31 (-19.25 % of base) : 34844.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
-13 (-19.12 % of base) : 33134.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
-42 (-18.50 % of base) : 36608.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-20 (-18.35 % of base) : 4565.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)
-18 (-17.82 % of base) : 25466.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
-20 (-17.39 % of base) : 9679.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
-26 (-17.11 % of base) : 36436.dasm - System.Management.Automation.LanguagePrimitives:TryConvertTo[System.__Canon](System.Object,System.IFormatProvider,byref):ubyte (FullOpts)
-40 (-16.81 % of base) : 36789.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-20 (-16.53 % of base) : 9306.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
-15 (-16.48 % of base) : 19644.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
smoke_tests.nativeaot.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4588644 (overridden on cmd)
Total bytes of diff: 4586335 (overridden on cmd)
Total bytes of delta: -2309 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
5 : 11736.dasm (1.37 % of base)
2 : 14279.dasm (0.41 % of base)
Top file improvements (bytes):
-43 : 3112.dasm (-15.14 % of base)
-39 : 18070.dasm (-14.66 % of base)
-39 : 20884.dasm (-14.66 % of base)
-39 : 574.dasm (-14.66 % of base)
-39 : 15458.dasm (-14.66 % of base)
-34 : 9286.dasm (-11.89 % of base)
-31 : 3024.dasm (-14.76 % of base)
-31 : 8926.dasm (-15.20 % of base)
-28 : 3020.dasm (-14.07 % of base)
-28 : 8923.dasm (-14.51 % of base)
-26 : 30391.dasm (-11.45 % of base)
-25 : 13450.dasm (-12.82 % of base)
-25 : 7868.dasm (-12.44 % of base)
-18 : 10229.dasm (-30.00 % of base)
-18 : 23341.dasm (-7.47 % of base)
-18 : 13250.dasm (-23.38 % of base)
-18 : 30414.dasm (-20.00 % of base)
-18 : 30415.dasm (-18.56 % of base)
-18 : 32109.dasm (-30.00 % of base)
-18 : 12731.dasm (-19.35 % of base)
62 total files with Code Size differences (60 improved, 2 regressed), 6 unchanged.
Top method regressions (bytes):
5 (1.37 % of base) : 11736.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
2 (0.41 % of base) : 14279.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-43 (-15.14 % of base) : 3112.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-39 (-14.66 % of base) : 18070.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-39 (-14.66 % of base) : 20884.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-39 (-14.66 % of base) : 574.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-39 (-14.66 % of base) : 15458.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-34 (-11.89 % of base) : 9286.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
-31 (-14.76 % of base) : 3024.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-31 (-15.20 % of base) : 8926.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-28 (-14.07 % of base) : 3020.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-28 (-14.51 % of base) : 8923.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
-26 (-11.45 % of base) : 30391.dasm - System.Reflection.AssemblyName:Clone():System.Object:this (FullOpts)
-25 (-12.82 % of base) : 13450.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-25 (-12.44 % of base) : 7868.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
-18 (-30.00 % of base) : 10229.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-18 (-30.00 % of base) : 32109.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-18 (-4.28 % of base) : 7813.dasm - System.Diagnostics.PerformanceCounterLib+PerformanceMonitor:GetData(System.String):ubyte[]:this (FullOpts)
-18 (-18.56 % of base) : 30416.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
-18 (-20.00 % of base) : 30414.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-18 (-19.35 % of base) : 12731.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
-18 (-19.35 % of base) : 8073.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
Top method regressions (percentages):
5 (1.37 % of base) : 11736.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
2 (0.41 % of base) : 14279.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
-18 (-30.00 % of base) : 10229.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-18 (-30.00 % of base) : 32109.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
-16 (-25.40 % of base) : 13095.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-16 (-25.40 % of base) : 7088.dasm - System.Reflection.Runtime.MethodInfos.CustomMethodMapper+StringActions+<>c:<get_Map>b__1_1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
-18 (-23.38 % of base) : 13250.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
-13 (-21.67 % of base) : 8783.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
-18 (-20.00 % of base) : 30414.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
-18 (-19.35 % of base) : 12731.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
-18 (-19.35 % of base) : 8073.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
-18 (-18.56 % of base) : 30416.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
-18 (-18.56 % of base) : 30415.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
-18 (-18.00 % of base) : 30413.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
-17 (-15.89 % of base) : 9287.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
-31 (-15.20 % of base) : 8926.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-43 (-15.14 % of base) : 3112.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-13 (-14.94 % of base) : 10882.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
-13 (-14.94 % of base) : 32312.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
-31 (-14.76 % of base) : 3024.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
-39 (-14.66 % of base) : 18070.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
-39 (-14.66 % of base) : 20884.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)