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)