Assembly Diffs
osx arm64
Diffs are based on 2,118,399 contexts (927,360 MinOpts, 1,191,039 FullOpts).
MISSED contexts: base: 6,082 (0.27%), diff: 117,618 (5.26%)
Overall (-114,860 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
31,824,936 |
-7,156 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
15,067,772 |
-440 |
| coreclr_tests.run.osx.arm64.checked.mch |
453,366,220 |
-3,616 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,668,080 |
-38,368 |
| libraries.pmi.osx.arm64.checked.mch |
59,094,280 |
-18,192 |
| libraries_tests.run.osx.arm64.Release.mch |
274,387,732 |
-21,308 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
128,211,628 |
-22,700 |
| realworld.run.osx.arm64.checked.mch |
10,413,200 |
-3,080 |
FullOpts (-114,860 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
15,380,736 |
-7,156 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
3,555,224 |
-440 |
| coreclr_tests.run.osx.arm64.checked.mch |
121,899,812 |
-3,616 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,666,452 |
-38,368 |
| libraries.pmi.osx.arm64.checked.mch |
58,973,152 |
-18,192 |
| libraries_tests.run.osx.arm64.Release.mch |
72,648,832 |
-21,308 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
115,074,096 |
-22,700 |
| realworld.run.osx.arm64.checked.mch |
9,844,792 |
-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 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.79) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3,100.69) long -> x21 hoist "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 hoist "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.79) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3,100.69) long -> x21 hoist "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 hoist "CSE - aggressive"
-; V08 cse2 [V08,T04] ( 3,100.01) int -> x20 "CSE - aggressive"
-; V09 cse3 [V09,T07] ( 3, 99.43) long -> x21 hoist "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 hoist "CSE - aggressive"
+; V05 cse2 [V05,T02] ( 3,100.01) int -> x20 "CSE - aggressive"
+; V06 cse3 [V06,T05] ( 3, 99.43) long -> x21 hoist "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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 hoist "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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 hoist "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 hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive"
+; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 hoist "CSE - aggressive"
+; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 hoist "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)
+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
...
+12 (+1.46%) : 577332.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
@@ -15,38 +15,37 @@
; V03 arg3 [V03,T03] ( 4, 4 ) int -> x22 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.TypeDesc>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.TypeDesc>
-; V06 loc2 [V06,T24] ( 3, 0.13) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
-; V07 loc3 [V07,T14] ( 5, 0.62) int -> x19
-; V08 loc4 [V08,T18] ( 3, 0.29) ref -> x1 class-hnd <Internal.TypeSystem.DefType>
+; V06 loc2 [V06,T23] ( 3, 0.13) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V07 loc3 [V07,T13] ( 5, 0.62) int -> x19
+; V08 loc4 [V08,T17] ( 3, 0.29) ref -> x1 class-hnd <Internal.TypeSystem.DefType>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T05] ( 9, 4.31) ref -> x24 "guarded devirt return temp"
+; V10 tmp1 [V10,T04] ( 9, 4.31) ref -> x24 "guarded devirt return temp"
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V12 tmp3 [V12,T08] ( 2, 1.45) int -> x0 "guarded devirt return temp"
+; V12 tmp3 [V12,T05] ( 4, 2.90) int -> x23 "guarded devirt return temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilerContext>
-; V14 tmp5 [V14,T21] ( 6, 0.17) ref -> x19 "guarded devirt return temp"
+; V14 tmp5 [V14,T20] ( 6, 0.17) ref -> x19 "guarded devirt return temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V16 tmp7 [V16,T17] ( 4, 0.29) int -> x0 "guarded devirt return temp"
+; V16 tmp7 [V16,T16] ( 4, 0.29) int -> x0 "guarded devirt return temp"
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilerContext>
-; V18 tmp9 [V18,T09] ( 3, 1.89) int -> x0
-; V19 tmp10 [V19,T12] ( 3, 1.38) ref -> x25 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V18 tmp9 [V18,T07] ( 3, 1.89) int -> x0
+; V19 tmp10 [V19,T11] ( 3, 1.38) ref -> x25 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V21 tmp12 [V21,T13] ( 3, 0.69) ref -> x26 "guarded devirt return temp"
+; V21 tmp12 [V21,T12] ( 3, 0.69) ref -> x26 "guarded devirt return temp"
;* V22 tmp13 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp14 [V23,T15] ( 3, 0.51) ref -> x25 "guarded devirt return temp"
-; V24 tmp15 [V24,T10] ( 5, 1.52) ref -> x0 single-def "guarded devirt arg temp"
+; V23 tmp14 [V23,T14] ( 3, 0.51) ref -> x25 "guarded devirt return temp"
+; V24 tmp15 [V24,T08] ( 5, 1.52) ref -> x0 single-def "guarded devirt arg temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V26 tmp17 [V26,T16] ( 3, 0.48) ref -> x26 "guarded devirt return temp"
-; V27 tmp18 [V27,T11] ( 5, 1.45) ref -> x0 single-def "guarded devirt arg temp"
+; V26 tmp17 [V26,T15] ( 3, 0.48) ref -> x26 "guarded devirt return temp"
+; V27 tmp18 [V27,T09] ( 5, 1.45) ref -> x0 single-def "guarded devirt arg temp"
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;* V29 tmp20 [V29,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V30 tmp21 [V30,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MetadataType>
-; V31 tmp22 [V31,T25] ( 3, 0.11) int -> x2 "Inline return value spill temp"
-; V32 tmp23 [V32,T22] ( 3, 0.16) int -> x2 single-def "Inline stloc first use temp"
-; V33 tmp24 [V33,T26] ( 3, 0.10) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V34 cse0 [V34,T23] ( 3, 0.14) ref -> x22 "CSE - conservative"
-; V35 cse1 [V35,T20] ( 2, 0.18) byref -> x26 hoist "CSE - conservative"
-; V36 cse2 [V36,T19] ( 3, 0.24) int -> x22 "CSE - conservative"
-; V37 cse3 [V37,T06] ( 9, 3.31) long -> x23 multi-def "CSE - aggressive"
+; V29 tmp20 [V29,T24] ( 3, 0.11) int -> x2 "Inline return value spill temp"
+; V30 tmp21 [V30,T21] ( 3, 0.16) int -> x2 single-def "Inline stloc first use temp"
+; V31 tmp22 [V31,T25] ( 3, 0.10) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+;* V32 tmp23 [V32,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V33 cse0 [V33,T22] ( 3, 0.14) ref -> x22 "CSE - conservative"
+; V34 cse1 [V34,T19] ( 2, 0.18) byref -> x26 hoist "CSE - conservative"
+; V35 cse2 [V35,T18] ( 3, 0.24) int -> x22 "CSE - conservative"
+; V36 cse3 [V36,T06] ( 9, 3.31) long -> x23 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -175,8 +174,9 @@ G_M9389_IG14: ; bbWeight=0.72, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x0-x1]
- cbz w0, G_M9389_IG20
- ;; size=28 bbWeight=0.72 PerfScore 8.69
+ sxtw w23, w0
+ cbz w23, G_M9389_IG20
+ ;; size=32 bbWeight=0.72 PerfScore 9.05
G_M9389_IG15: ; bbWeight=0.11, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
b G_M9389_IG23
;; size=4 bbWeight=0.11 PerfScore 0.11
@@ -213,9 +213,11 @@ G_M9389_IG18: ; bbWeight=0.72, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
ldr x1, [x23, #0x50]
ldr x1, [x1, #0x38]
blr x1
- cbz x0, G_M9389_IG20
+ cmp x0, #0
+ cset x23, ne
+ cbz w23, G_M9389_IG20
b G_M9389_IG23
- ;; size=72 bbWeight=0.72 PerfScore 14.12
+ ;; size=80 bbWeight=0.72 PerfScore 14.85
G_M9389_IG19: ; bbWeight=0.22, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x24]
mov x0, x24
@@ -403,7 +405,7 @@ G_M9389_IG43: ; bbWeight=0, gcrefRegs=3280001 {x0 x19 x21 x24 x25}, byref
b G_M9389_IG12
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 820, prolog size 24, PerfScore 78.16, instruction count 205, allocated bytes for code 820 (MethodHash=872bdb52) for method Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
+; Total bytes of code 832, prolog size 24, PerfScore 79.24, instruction count 208, allocated bytes for code 832 (MethodHash=872bdb52) for method Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -414,7 +416,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 205 (0x000cd) Actual length = 820 (0x000334)
+ Function Length : 208 (0x000d0) Actual length = 832 (0x000340)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+1.49%) : 580796.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
@@ -15,36 +15,35 @@
; V03 arg3 [V03,T03] ( 4, 4 ) int -> x22 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.TypeDesc>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.TypeDesc>
-; V06 loc2 [V06,T23] ( 3, 0.13) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
-; V07 loc3 [V07,T16] ( 5, 0.60) int -> x19
-; V08 loc4 [V08,T18] ( 3, 0.28) ref -> x1 class-hnd <Internal.TypeSystem.DefType>
+; V06 loc2 [V06,T22] ( 3, 0.13) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V07 loc3 [V07,T15] ( 5, 0.60) int -> x19
+; V08 loc4 [V08,T17] ( 3, 0.28) ref -> x1 class-hnd <Internal.TypeSystem.DefType>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T05] ( 9, 4.22) ref -> x24 "guarded devirt return temp"
+; V10 tmp1 [V10,T04] ( 9, 4.22) ref -> x24 "guarded devirt return temp"
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V12 tmp3 [V12,T08] ( 2, 1.46) int -> x0 "guarded devirt return temp"
+; V12 tmp3 [V12,T05] ( 4, 2.92) int -> x23 "guarded devirt return temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilerContext>
-; V14 tmp5 [V14,T22] ( 5, 0.16) ref -> x19 "guarded devirt return temp"
+; V14 tmp5 [V14,T21] ( 5, 0.16) ref -> x19 "guarded devirt return temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V16 tmp7 [V16,T17] ( 4, 0.28) int -> x0 "guarded devirt return temp"
+; V16 tmp7 [V16,T16] ( 4, 0.28) int -> x0 "guarded devirt return temp"
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilerContext>
-; V18 tmp9 [V18,T10] ( 3, 1.89) int -> x0
-; V19 tmp10 [V19,T12] ( 3, 1.40) ref -> x25 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V18 tmp9 [V18,T08] ( 3, 1.89) int -> x0
+; V19 tmp10 [V19,T11] ( 3, 1.40) ref -> x25 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V21 tmp12 [V21,T13] ( 3, 0.70) ref -> x26 "guarded devirt return temp"
+; V21 tmp12 [V21,T12] ( 3, 0.70) ref -> x26 "guarded devirt return temp"
;* V22 tmp13 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp14 [V23,T14] ( 3, 0.70) ref -> x25 "guarded devirt return temp"
-; V24 tmp15 [V24,T09] ( 5, 2.09) ref -> x0 single-def "guarded devirt arg temp"
+; V23 tmp14 [V23,T13] ( 3, 0.70) ref -> x25 "guarded devirt return temp"
+; V24 tmp15 [V24,T07] ( 5, 2.09) ref -> x0 single-def "guarded devirt arg temp"
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V26 tmp17 [V26,T15] ( 3, 0.63) ref -> x26 "guarded devirt return temp"
-; V27 tmp18 [V27,T11] ( 5, 1.88) ref -> x0 single-def "guarded devirt arg temp"
+; V26 tmp17 [V26,T14] ( 3, 0.63) ref -> x26 "guarded devirt return temp"
+; V27 tmp18 [V27,T09] ( 5, 1.88) ref -> x0 single-def "guarded devirt arg temp"
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-;* V29 tmp20 [V29,T07] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V30 tmp21 [V30,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MetadataType>
-; V31 tmp22 [V31,T24] ( 3, 0.11) int -> x2 "Inline return value spill temp"
-; V32 tmp23 [V32,T21] ( 3, 0.17) int -> x2 single-def "Inline stloc first use temp"
-; V33 cse0 [V33,T20] ( 2, 0.17) byref -> x27 hoist "CSE - conservative"
-; V34 cse1 [V34,T19] ( 3, 0.23) int -> x26 "CSE - conservative"
-; V35 cse2 [V35,T06] ( 9, 3.29) long -> x23 multi-def "CSE - aggressive"
+; V29 tmp20 [V29,T23] ( 3, 0.11) int -> x2 "Inline return value spill temp"
+; V30 tmp21 [V30,T20] ( 3, 0.17) int -> x2 single-def "Inline stloc first use temp"
+;* V31 tmp22 [V31,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V32 cse0 [V32,T19] ( 2, 0.17) byref -> x27 hoist "CSE - conservative"
+; V33 cse1 [V33,T18] ( 3, 0.23) int -> x26 "CSE - conservative"
+; V34 cse2 [V34,T06] ( 9, 3.29) long -> x23 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -161,8 +160,9 @@ G_M9389_IG13: ; bbWeight=0.73, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
ldr x2, [x2, #0x38]
blr x2
; gcrRegs -[x0-x1]
- cbz w0, G_M9389_IG19
- ;; size=28 bbWeight=0.73 PerfScore 8.76
+ sxtw w23, w0
+ cbz w23, G_M9389_IG19
+ ;; size=32 bbWeight=0.73 PerfScore 9.13
G_M9389_IG14: ; bbWeight=0.11, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
b G_M9389_IG22
;; size=4 bbWeight=0.11 PerfScore 0.11
@@ -199,9 +199,11 @@ G_M9389_IG17: ; bbWeight=0.73, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
ldr x1, [x23, #0x50]
ldr x1, [x1, #0x38]
blr x1
- cbz x0, G_M9389_IG19
+ cmp x0, #0
+ cset x23, ne
+ cbz w23, G_M9389_IG19
b G_M9389_IG22
- ;; size=72 bbWeight=0.73 PerfScore 14.24
+ ;; size=80 bbWeight=0.73 PerfScore 14.97
G_M9389_IG18: ; bbWeight=0.21, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x24]
mov x0, x24
@@ -388,7 +390,7 @@ G_M9389_IG41: ; bbWeight=0, gcrefRegs=3280001 {x0 x19 x21 x24 x25}, byref
b G_M9389_IG11
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 808, prolog size 28, PerfScore 81.66, instruction count 202, allocated bytes for code 808 (MethodHash=872bdb52) for method Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
+; Total bytes of code 820, prolog size 28, PerfScore 82.75, instruction count 205, allocated bytes for code 820 (MethodHash=872bdb52) for method Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -399,7 +401,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 202 (0x000ca) Actual length = 808 (0x000328)
+ Function Length : 205 (0x000cd) Actual length = 820 (0x000334)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
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 |
176 |
149 |
7 |
20 |
-3,932 |
+316 |
| libraries.crossgen2.osx.arm64.checked.mch |
1,097 |
1,087 |
3 |
7 |
-38,380 |
+12 |
| libraries.pmi.osx.arm64.checked.mch |
616 |
588 |
9 |
19 |
-18,436 |
+244 |
| libraries_tests.run.osx.arm64.Release.mch |
1,015 |
873 |
109 |
33 |
-24,752 |
+3,444 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
755 |
712 |
17 |
26 |
-23,068 |
+368 |
| realworld.run.osx.arm64.checked.mch |
115 |
108 |
1 |
6 |
-3,096 |
+16 |
|
4,088 |
3,821 |
156 |
111 |
-119,444 |
+4,584 |
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,055 |
18 |
285,037 |
2,028 (0.64%) |
30,561 (9.68%) |
| libraries_tests.run.osx.arm64.Release.mch |
603,872 |
462,062 |
141,810 |
963 (0.15%) |
28,385 (4.49%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
260,962 |
21,558 |
239,404 |
2,083 (0.69%) |
42,152 (13.91%) |
| realworld.run.osx.arm64.checked.mch |
27,067 |
3 |
27,064 |
325 (1.03%) |
4,476 (14.19%) |
|
2,118,399 |
927,360 |
1,191,039 |
6,082 (0.27%) |
117,618 (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: 31824936 (overridden on cmd)
Total bytes of diff: 31817780 (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 : 25288.dasm (-6.15 % of base)
-32 : 12295.dasm (-6.15 % of base)
-28 : 18931.dasm (-28.00 % of base)
-28 : 39909.dasm (-3.30 % of base)
-28 : 42805.dasm (-3.30 % of base)
-28 : 43861.dasm (-3.30 % of base)
-28 : 57187.dasm (-9.46 % of base)
-28 : 58046.dasm (-8.43 % of base)
-28 : 59164.dasm (-3.30 % of base)
-24 : 13465.dasm (-2.86 % of base)
-24 : 82200.dasm (-2.87 % of base)
-24 : 20833.dasm (-2.87 % of base)
-24 : 27061.dasm (-2.82 % of base)
-24 : 28518.dasm (-4.48 % of base)
-24 : 30621.dasm (-2.82 % of base)
-24 : 38528.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) : 25288.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.15 % of base) : 12295.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) : 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) : 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) : 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.86 % of base) : 13465.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-24 (-2.87 % of base) : 82200.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) : 25288.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
-32 (-6.15 % of base) : 12295.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) : 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) : 43861.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: 15067772 (overridden on cmd)
Total bytes of diff: 15067332 (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 : 23797.dasm (7.32 % of base)
12 : 30296.dasm (7.32 % of base)
12 : 46738.dasm (7.32 % of base)
12 : 47250.dasm (7.32 % of base)
12 : 28458.dasm (7.32 % of base)
12 : 47134.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 : 39016.dasm (-12.73 % of base)
-28 : 41284.dasm (-15.91 % of base)
-28 : 3535.dasm (-28.00 % of base)
-28 : 38982.dasm (-4.27 % of base)
-28 : 9521.dasm (-25.93 % of base)
-24 : 41231.dasm (-5.56 % of base)
-24 : 39625.dasm (-11.11 % of base)
-24 : 3081.dasm (-4.51 % of base)
-24 : 39076.dasm (-17.14 % of base)
-24 : 41505.dasm (-13.95 % of base)
-24 : 42172.dasm (-6.45 % 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: 453366220 (overridden on cmd)
Total bytes of diff: 453362604 (overridden on cmd)
Total bytes of delta: -3616 (-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)
12 : 577332.dasm (1.46 % of base)
12 : 580796.dasm (1.49 % 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 : 192.dasm (-4.30 % of base)
-52 : 202209.dasm (-5.06 % of base)
-52 : 382.dasm (-4.22 % of base)
-48 : 182322.dasm (-21.82 % of base)
-48 : 202235.dasm (-10.53 % of base)
-44 : 184619.dasm (-23.40 % of base)
-44 : 184597.dasm (-23.40 % of base)
-44 : 474404.dasm (-6.92 % of base)
-44 : 506831.dasm (-6.92 % of base)
-44 : 201058.dasm (-16.18 % of base)
-44 : 465395.dasm (-6.96 % of base)
-44 : 585068.dasm (-6.92 % of base)
-40 : 197531.dasm (-4.81 % of base)
-40 : 198999.dasm (-12.50 % of base)
-40 : 184598.dasm (-12.20 % of base)
-40 : 184621.dasm (-12.20 % of base)
-40 : 200215.dasm (-8.06 % of base)
51 total files with Code Size differences (44 improved, 7 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)
12 (1.46 % of base) : 577332.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
12 (1.49 % of base) : 580796.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
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 (-23.40 % of base) : 184597.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
-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.96 % of base) : 465395.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 (-12.20 % of base) : 184621.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
-40 (-12.20 % of base) : 184598.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):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.49 % of base) : 580796.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
12 (1.46 % of base) : 577332.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (Tier1)
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: 55668080 (overridden on cmd)
Total bytes of diff: 55629712 (overridden on cmd)
Total bytes of delta: -38368 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 12336.dasm (1.09 % of base)
4 : 167937.dasm (1.09 % of base)
4 : 191458.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 : 108744.dasm (-13.91 % of base)
-320 : 152899.dasm (-20.36 % 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 : 80436.dasm (-17.14 % of base)
-216 : 80437.dasm (-16.77 % of base)
-216 : 208216.dasm (-14.84 % 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) : 12336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
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)
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 (-13.91 % of base) : 108744.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-320 (-20.36 % of base) : 152899.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) : 12336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
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)
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: 59094280 (overridden on cmd)
Total bytes of diff: 59076088 (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 : 274722.dasm (1.17 % of base)
16 : 97003.dasm (4.35 % of base)
8 : 231597.dasm (2.17 % of base)
4 : 15170.dasm (0.42 % of base)
4 : 228084.dasm (0.93 % of base)
4 : 232970.dasm (0.07 % of base)
4 : 224719.dasm (2.70 % 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 : 110195.dasm (-21.84 % of base)
-180 : 110188.dasm (-22.61 % of base)
-172 : 196888.dasm (-8.57 % of base)
-168 : 197531.dasm (-42.00 % of base)
-120 : 110349.dasm (-18.99 % of base)
-120 : 110358.dasm (-18.29 % 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 : 197452.dasm (-34.62 % of base)
-72 : 239894.dasm (-14.88 % of base)
-68 : 305365.dasm (-14.17 % of base)
-68 : 305372.dasm (-13.18 % 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 (-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)
-68 (-13.18 % of base) : 305372.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Xml.Serialization.XmlSerializer):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: 274387732 (overridden on cmd)
Total bytes of diff: 274366424 (overridden on cmd)
Total bytes of delta: -21308 (-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 : 119355.dasm (1.11 % of base)
44 : 233004.dasm (1.22 % 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)
44 : 299426.dasm (1.11 % of base)
44 : 622960.dasm (1.15 % of base)
40 : 308004.dasm (1.16 % of base)
40 : 322796.dasm (1.15 % of base)
40 : 279991.dasm (1.11 % of base)
40 : 322100.dasm (1.03 % of base)
40 : 344711.dasm (1.11 % of base)
40 : 577724.dasm (1.11 % of base)
40 : 186120.dasm (1.16 % of base)
40 : 415035.dasm (1.05 % of base)
40 : 488760.dasm (1.15 % of base)
40 : 577839.dasm (1.14 % of base)
Top file improvements (bytes):
-168 : 560725.dasm (-2.38 % of base)
-116 : 560332.dasm (-2.22 % of base)
-108 : 471673.dasm (-6.04 % of base)
-108 : 466374.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 : 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)
-60 : 529456.dasm (-14.29 % of base)
-56 : 119409.dasm (-11.20 % of base)
-56 : 168685.dasm (-2.31 % of base)
85 total files with Code Size differences (50 improved, 35 regressed), 20 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.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.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.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)
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) : 622960.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.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.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.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.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.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.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)
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)
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) : 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)
-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)
-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) : 558012.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) : 529456.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) : 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) : 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) : 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) : 557329.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
-28 (-46.67 % of base) : 529306.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: 128211628 (overridden on cmd)
Total bytes of diff: 128188928 (overridden on cmd)
Total bytes of delta: -22700 (-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 : 38037.dasm (3.09 % 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)
8 : 37909.dasm (1.80 % of base)
4 : 37795.dasm (0.49 % of base)
4 : 37349.dasm (0.40 % 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 : 192283.dasm (-7.53 % of base)
-160 : 193653.dasm (-7.53 % of base)
-160 : 196567.dasm (-8.97 % 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) : 48056.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object: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) : 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: 10413200 (overridden on cmd)
Total bytes of diff: 10410120 (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 : 4955.dasm (-22.22 % of base)
-56 : 30277.dasm (-2.52 % of base)
-56 : 6687.dasm (-4.09 % of base)
-56 : 9676.dasm (-8.81 % 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 : 18579.dasm (-12.50 % of base)
-40 : 26840.dasm (-8.06 % of base)
-40 : 14933.dasm (-4.88 % of base)
-40 : 30307.dasm (-13.89 % 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)