Assembly Diffs

osx arm64

Diffs are based on 2,158,070 contexts (932,669 MinOpts, 1,225,401 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 112,800 (4.97%)

Overall (+140,724 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 9,448,856 -564
benchmarks.run_pgo.osx.arm64.checked.mch 32,120,784 +17,264
benchmarks.run_tiered.osx.arm64.checked.mch 15,054,540 -304
coreclr_tests.run.osx.arm64.checked.mch 456,513,504 +174,848
libraries.crossgen2.osx.arm64.checked.mch 55,720,964 -38,600
libraries.pmi.osx.arm64.checked.mch 60,103,176 -17,584
libraries_tests.run.osx.arm64.Release.mch 289,883,304 +22,908
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 129,078,576 -13,956
realworld.run.osx.arm64.checked.mch 10,546,316 -3,288

FullOpts (+140,724 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 9,448,320 -564
benchmarks.run_pgo.osx.arm64.checked.mch 15,819,484 +17,264
benchmarks.run_tiered.osx.arm64.checked.mch 3,550,056 -304
coreclr_tests.run.osx.arm64.checked.mch 123,900,580 +174,848
libraries.crossgen2.osx.arm64.checked.mch 55,719,336 -38,600
libraries.pmi.osx.arm64.checked.mch 59,982,048 -17,584
libraries_tests.run.osx.arm64.Release.mch 86,167,456 +22,908
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 115,924,848 -13,956
realworld.run.osx.arm64.checked.mch 9,982,360 -3,288

Example diffs

benchmarks.run.osx.arm64.checked.mch

-28 (-46.67%) : 2058.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-31.58%) : 1480.dasm - System.Collections.TryGetValueFalse`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M53474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M53474_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M53474_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M53474_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53474_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3, #0x08] - cmp x2, x3 - beq G_M53474_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M53474_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0, #0x08]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M53474_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M53474_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=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -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%) : 420.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)

+8 (+0.36%) : 20113.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

@@ -8,17 +8,17 @@ ; 0 inlinees with PGO data; 31 single block inlinees; 33 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T19] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
+; V00 this [V00,T20] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Reflection.Metadata.EntityHandle>
-; V02 arg2 [V02,T65] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
+; V02 arg2 [V02,T66] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
; V03 loc0 [V03,T00] ( 13, 29 ) ref -> x21 class-hnd <<unknown class>>
-; V04 loc1 [V04,T37] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc1 [V04,T38] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Microsoft.Cci.SecurityAttribute> ; V06 loc3 [V06 ] ( 7, 10.50) struct (24) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]>
-; V07 loc4 [V07,T30] ( 3, 12 ) short -> x22
+; V07 loc4 [V07,T31] ( 3, 12 ) short -> x22
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
-; V10 tmp2 [V10,T17] ( 4, 14 ) ref -> x21
+; V10 tmp2 [V10,T18] ( 4, 14 ) ref -> x21
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V12 tmp4 [V12,T15] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomAttribute]> @@ -27,114 +27,113 @@ ; V16 tmp8 [V16,T08] ( 4, 20 ) short -> x24 "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Cci.ICustomAttribute> ;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V19 tmp11 [V19,T20] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V19 tmp11 [V19,T21] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V21 tmp13 [V21,T21] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V21 tmp13 [V21,T22] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V23 tmp15 [V23,T72] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V24 tmp16 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V25 tmp17 [V25,T54] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
+;* V23 tmp15 [V23,T73] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 tmp16 [V24,T23] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V25 tmp17 [V25,T55] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V27 tmp19 [V27 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" -;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V29 tmp21 [V29,T16] ( 8, 15 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> -;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -; V31 tmp23 [V31,T23] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> -;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V33 tmp25 [V33,T46] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> -; V34 tmp26 [V34,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V35 tmp27 [V35,T41] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" -;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V37 tmp29 [V37,T09] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" -; V38 tmp30 [V38,T31] ( 3, 12 ) int -> x3 "Inlining Arg" -; V39 tmp31 [V39,T05] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" -; V40 tmp32 [V40,T38] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V41 tmp33 [V41,T55] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V42 tmp34 [V42,T24] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V43 tmp35 [V43,T25] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V44 tmp36 [V44,T62] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V45 tmp37 [V45,T32] ( 3, 12 ) int -> x1 "Inlining Arg" -; V46 tmp38 [V46,T48] ( 2, 8 ) long -> x1 "Inlining Arg" -; V47 tmp39 [V47,T12] ( 4, 16 ) long -> x2 "Inlining Arg" -;* V48 tmp40 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V49 tmp41 [V49,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V50 tmp42 [V50,T42] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V52 tmp44 [V52,T10] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" -; V53 tmp45 [V53,T33] ( 3, 12 ) int -> x2 "Inlining Arg" -; V54 tmp46 [V54,T06] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" -; V55 tmp47 [V55,T39] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V56 tmp48 [V56,T56] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V57 tmp49 [V57,T26] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V58 tmp50 [V58,T27] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V59 tmp51 [V59,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V60 tmp52 [V60,T34] ( 3, 12 ) int -> x1 "Inlining Arg" -; V61 tmp53 [V61,T49] ( 2, 8 ) long -> x1 "Inlining Arg" -; V62 tmp54 [V62,T13] ( 4, 16 ) long -> x2 "Inlining Arg" -;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V64 tmp56 [V64,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V65 tmp57 [V65,T43] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V67 tmp59 [V67,T11] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" -; V68 tmp60 [V68,T35] ( 3, 12 ) int -> x2 "Inlining Arg" -; V69 tmp61 [V69,T07] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" -; V70 tmp62 [V70,T40] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V71 tmp63 [V71,T57] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V72 tmp64 [V72,T28] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V73 tmp65 [V73,T29] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V74 tmp66 [V74,T64] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V75 tmp67 [V75,T36] ( 3, 12 ) int -> x1 "Inlining Arg" -; V76 tmp68 [V76,T50] ( 2, 8 ) long -> x1 "Inlining Arg" -; V77 tmp69 [V77,T14] ( 4, 16 ) long -> x2 "Inlining Arg" -;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V27 tmp19 [V27,T17] ( 7, 14 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> +;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> +; V29 tmp21 [V29,T24] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> +;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V31 tmp23 [V31,T47] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> +; V32 tmp24 [V32,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V33 tmp25 [V33,T42] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" +;* V34 tmp26 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V35 tmp27 [V35,T09] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" +; V36 tmp28 [V36,T32] ( 3, 12 ) int -> x3 "Inlining Arg" +; V37 tmp29 [V37,T05] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" +; V38 tmp30 [V38,T39] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V39 tmp31 [V39,T56] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V40 tmp32 [V40,T25] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V41 tmp33 [V41,T26] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V42 tmp34 [V42,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V43 tmp35 [V43,T33] ( 3, 12 ) int -> x1 "Inlining Arg" +; V44 tmp36 [V44,T49] ( 2, 8 ) long -> x1 "Inlining Arg" +; V45 tmp37 [V45,T12] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V46 tmp38 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V47 tmp39 [V47,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V48 tmp40 [V48,T43] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V50 tmp42 [V50,T10] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" +; V51 tmp43 [V51,T34] ( 3, 12 ) int -> x2 "Inlining Arg" +; V52 tmp44 [V52,T06] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" +; V53 tmp45 [V53,T40] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V54 tmp46 [V54,T57] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V55 tmp47 [V55,T27] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V56 tmp48 [V56,T28] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V57 tmp49 [V57,T64] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V58 tmp50 [V58,T35] ( 3, 12 ) int -> x1 "Inlining Arg" +; V59 tmp51 [V59,T50] ( 2, 8 ) long -> x1 "Inlining Arg" +; V60 tmp52 [V60,T13] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V61 tmp53 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V62 tmp54 [V62,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V63 tmp55 [V63,T44] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V64 tmp56 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V65 tmp57 [V65,T11] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" +; V66 tmp58 [V66,T36] ( 3, 12 ) int -> x2 "Inlining Arg" +; V67 tmp59 [V67,T07] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" +; V68 tmp60 [V68,T41] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V69 tmp61 [V69,T58] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V70 tmp62 [V70,T29] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V71 tmp63 [V71,T30] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V72 tmp64 [V72,T65] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V73 tmp65 [V73,T37] ( 3, 12 ) int -> x1 "Inlining Arg" +; V74 tmp66 [V74,T51] ( 2, 8 ) long -> x1 "Inlining Arg" +; V75 tmp67 [V75,T14] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V78 tmp70 [V78 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
;* V79 tmp71 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V80 tmp72 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -;* V81 tmp73 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V82 tmp74 [V82,T78] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V83 tmp75 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V84 tmp76 [V84,T66] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V85 tmp77 [V85,T75] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V86 tmp78 [V86,T73] ( 4, 2 ) ref -> x1 -; V87 tmp79 [V87,T67] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V88 tmp80 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V89 tmp81 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V90 tmp82 [V90,T68] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> -; V91 tmp83 [V91,T76] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V92 tmp84 [V92,T74] ( 4, 2 ) ref -> x1 -; V93 tmp85 [V93,T69] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V94 tmp86 [V94 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V95 tmp87 [V95 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> -; V96 tmp88 [V96,T77] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V97 tmp89 [V97,T53] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP -; V98 tmp90 [V98,T44] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V99 tmp91 [V99,T51] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V100 tmp92 [V100 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP -; V101 tmp93 [V101 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP -; V102 tmp94 [V102 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP -; V103 tmp95 [V103 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP -;* V104 tmp96 [V104 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP -;* V105 tmp97 [V105 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP -; V106 tmp98 [V106,T47] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP -; V107 tmp99 [V107,T52] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP -;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP -; V109 tmp101 [V109,T70] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP -; V110 tmp102 [V110,T45] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP -;* V111 tmp103 [V111 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP -;* V112 tmp104 [V112 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP -; V113 tmp105 [V113,T71] ( 2, 4 ) ref -> x2 "field V30._value (fldOffset=0x0)" P-INDEP -;* V114 tmp106 [V114 ] ( 0, 0 ) ref -> zero-ref "field V80._value (fldOffset=0x0)" P-INDEP -; V115 tmp107 [V115,T79] ( 3, 1.50) ref -> x0 single-def "field V95._dictionary (fldOffset=0x0)" P-INDEP -;* V116 tmp108 [V116,T83] ( 0, 0 ) int -> zero-ref single-def "field V95._index (fldOffset=0x8)" P-INDEP -; V117 tmp109 [V117,T81] ( 2, 1 ) int -> x1 single-def "field V95._version (fldOffset=0xc)" P-INDEP -;* V118 tmp110 [V118,T84] ( 0, 0 ) short -> zero-ref single-def "field V95._currentKey (fldOffset=0x10)" P-INDEP -; V119 PSPSym [V119,T82] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" -; V120 cse0 [V120,T58] ( 3, 6 ) ref -> x0 "CSE - moderate" -; V121 cse1 [V121,T59] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V122 cse2 [V122,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V123 cse3 [V123,T61] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V124 cse4 [V124,T80] ( 3, 1.50) ref -> x22 "CSE - conservative" -; V125 cse5 [V125,T18] ( 8, 12 ) long -> x22 multi-def "CSE - moderate" -; V126 cse6 [V126,T04] ( 12, 24 ) ref -> x1 multi-def "CSE - aggressive"
+; V80 tmp72 [V80,T79] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V81 tmp73 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V82 tmp74 [V82,T67] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V83 tmp75 [V83,T76] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V84 tmp76 [V84,T74] ( 4, 2 ) ref -> x1 +; V85 tmp77 [V85,T68] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V86 tmp78 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V87 tmp79 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V88 tmp80 [V88,T69] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> +; V89 tmp81 [V89,T77] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V90 tmp82 [V90,T75] ( 4, 2 ) ref -> x1 +; V91 tmp83 [V91,T70] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V92 tmp84 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V93 tmp85 [V93 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> +; V94 tmp86 [V94,T78] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V95 tmp87 [V95,T54] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP +; V96 tmp88 [V96,T45] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V97 tmp89 [V97,T52] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V98 tmp90 [V98 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP +; V99 tmp91 [V99 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP +; V100 tmp92 [V100 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP +; V101 tmp93 [V101 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP +;* V102 tmp94 [V102 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP +;* V103 tmp95 [V103 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP +; V104 tmp96 [V104,T48] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP +; V105 tmp97 [V105,T53] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP +;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP +; V107 tmp99 [V107,T71] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP +; V108 tmp100 [V108,T46] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP +;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP +;* V110 tmp102 [V110 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP +; V111 tmp103 [V111,T72] ( 2, 4 ) ref -> x2 "field V28._value (fldOffset=0x0)" P-INDEP +;* V112 tmp104 [V112 ] ( 0, 0 ) ref -> zero-ref "field V78._value (fldOffset=0x0)" P-INDEP +; V113 tmp105 [V113,T80] ( 3, 1.50) ref -> x0 single-def "field V93._dictionary (fldOffset=0x0)" P-INDEP +;* V114 tmp106 [V114,T84] ( 0, 0 ) int -> zero-ref single-def "field V93._index (fldOffset=0x8)" P-INDEP +; V115 tmp107 [V115,T82] ( 2, 1 ) int -> x1 single-def "field V93._version (fldOffset=0xc)" P-INDEP +;* V116 tmp108 [V116,T85] ( 0, 0 ) short -> zero-ref single-def "field V93._currentKey (fldOffset=0x10)" P-INDEP +; V117 PSPSym [V117,T83] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" +; V118 cse0 [V118,T59] ( 3, 6 ) ref -> x0 "CSE - moderate" +; V119 cse1 [V119,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V120 cse2 [V120,T61] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V121 cse3 [V121,T62] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V122 cse4 [V122,T81] ( 3, 1.50) ref -> x22 "CSE - conservative" +; V123 cse5 [V123,T19] ( 8, 12 ) long -> x22 multi-def "CSE - moderate" +; V124 cse6 [V124,T04] ( 12, 24 ) ref -> x1 multi-def "CSE - aggressive" +; V125 rat0 [V125,T16] ( 5, 15 ) ref -> x27 "replacement local"
; ; Lcl frame size = 128 @@ -149,7 +148,7 @@ G_M58756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [fp, #0x70] // [V06 loc3], [V06 loc3+0x08] str xzr, [fp, #0x80] // [V06 loc3+0x10] add x3, sp, #224
- str x3, [fp, #0x88] // [V119 PSPSym]
+ str x3, [fp, #0x88] // [V117 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 ...

+4 (+0.40%) : 2694.dasm - System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)

@@ -13,8 +13,8 @@ ; V02 arg2 [V02,T02] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Type[]> ; V03 arg3 [V03,T03] ( 6, 4.50) ref -> x21 class-hnd single-def <System.Type[]> ;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.MetadataToken>
-; V05 loc1 [V05,T11] ( 3, 2.50) ref -> x23 class-hnd <System.RuntimeTypeHandle[]> -; V06 loc2 [V06,T12] ( 3, 2.50) ref -> x25 class-hnd <System.RuntimeTypeHandle[]>
+; V05 loc1 [V05,T12] ( 3, 2.50) ref -> x23 class-hnd <System.RuntimeTypeHandle[]> +; V06 loc2 [V06,T13] ( 3, 2.50) ref -> x25 class-hnd <System.RuntimeTypeHandle[]>
; V07 loc3 [V07 ] ( 2, 2 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ModuleHandle> ;* V08 loc4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.IRuntimeMethodInfo> ; V09 loc5 [V09,T05] ( 6, 5 ) ref -> x25 class-hnd <System.Type> @@ -25,67 +25,69 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodBase> ;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T00] ( 6, 7.50) ref -> x25 class-hnd "spilling QMark2" <System.RuntimeType> -; V18 tmp2 [V18,T22] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> -; V19 tmp3 [V19,T27] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> -; V20 tmp4 [V20,T23] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp5 [V21,T24] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> -; V22 tmp6 [V22,T28] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> -; V23 tmp7 [V23,T25] ( 3, 0 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V24 tmp8 [V24,T29] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp9 [V25,T26] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V26 tmp10 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> -;* V27 tmp11 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V28 tmp12 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V29 tmp13 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V30 tmp14 [V30 ] ( 2, 1 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.ConstArray> -;* V31 tmp15 [V31 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V32 tmp16 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> -; V33 tmp17 [V33,T13] ( 2, 2 ) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> -;* V34 tmp18 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> -;* V35 tmp19 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V36 tmp20 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V37 tmp21 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V38 tmp22 [V38 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V39 tmp23 [V39,T09] ( 3, 3 ) int -> x25 "Inlining Arg" -;* V40 tmp24 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> -;* V41 tmp25 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V42 tmp26 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V43 tmp27 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V44 tmp28 [V44 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V45 tmp29 [V45,T15] ( 2, 2 ) int -> x1 "Inlining Arg" -;* V46 tmp30 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V47 tmp31 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.MethodBase> -; V48 tmp32 [V48,T14] ( 2, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Reflection.MethodBase> -; V49 tmp33 [V49,T10] ( 5, 2.50) int -> x23 "field V04.Value (fldOffset=0x0)" P-INDEP
+; V17 tmp1 [V17,T23] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> +; V18 tmp2 [V18,T28] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> +; V19 tmp3 [V19,T24] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp4 [V20,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> +; V21 tmp5 [V21,T29] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> +; V22 tmp6 [V22,T26] ( 3, 0 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V23 tmp7 [V23,T30] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V24 tmp8 [V24,T27] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V25 tmp9 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> +;* V26 tmp10 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V27 tmp11 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V28 tmp12 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V29 tmp13 [V29 ] ( 2, 1 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.ConstArray> +;* V30 tmp14 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V31 tmp15 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> +; V32 tmp16 [V32,T14] ( 2, 2 ) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +;* V33 tmp17 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> +;* V34 tmp18 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V35 tmp19 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V36 tmp20 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V37 tmp21 [V37 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V38 tmp22 [V38,T10] ( 3, 3 ) int -> x25 "Inlining Arg" +;* V39 tmp23 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> +;* V40 tmp24 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V41 tmp25 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V42 tmp26 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V43 tmp27 [V43 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V44 tmp28 [V44,T16] ( 2, 2 ) int -> x1 "Inlining Arg" +;* V45 tmp29 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V46 tmp30 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.MethodBase> +;* V47 tmp31 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> +; V48 tmp32 [V48,T15] ( 2, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Reflection.MethodBase> +; V49 tmp33 [V49,T11] ( 5, 2.50) int -> x23 "field V04.Value (fldOffset=0x0)" P-INDEP
; V50 tmp34 [V50 ] ( 2, 2 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V07.m_ptr (fldOffset=0x0)" P-DEP ;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref "field V10.m_length (fldOffset=0x0)" P-INDEP
-; V52 tmp36 [V52,T17] ( 2, 1 ) long -> x0 "field V10.m_constArray (fldOffset=0x8)" P-INDEP
+; V52 tmp36 [V52,T18] ( 2, 1 ) long -> x0 "field V10.m_constArray (fldOffset=0x8)" P-INDEP
;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref "field V11.m_keepalive (fldOffset=0x0)" P-INDEP ;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "field V11.m_metadataImport2 (fldOffset=0x8)" P-INDEP ; V55 tmp39 [V55,T06] ( 5, 5 ) ref -> x23 "field V12.m_value (fldOffset=0x0)" P-INDEP
-; V56 tmp40 [V56,T16] ( 3, 1.50) int -> x1 "field V13.Value (fldOffset=0x0)" P-INDEP -;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "field V26.m_keepalive (fldOffset=0x0)" P-INDEP -; V58 tmp42 [V58,T18] ( 2, 1 ) long -> x0 "field V26.m_metadataImport2 (fldOffset=0x8)" P-INDEP -;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref "field V28.Value (fldOffset=0x0)" P-INDEP -; V60 tmp44 [V60 ] ( 1, 0.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V30.m_length (fldOffset=0x0)" P-DEP -; V61 tmp45 [V61 ] ( 2, 1 ) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V30.m_constArray (fldOffset=0x8)" P-DEP -;* V62 tmp46 [V62 ] ( 0, 0 ) int -> zero-ref "field V31.Value (fldOffset=0x0)" P-INDEP -;* V63 tmp47 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V34.m_keepalive (fldOffset=0x0)" P-INDEP -; V64 tmp48 [V64,T19] ( 2, 1 ) long -> x0 "field V34.m_metadataImport2 (fldOffset=0x8)" P-INDEP -;* V65 tmp49 [V65 ] ( 0, 0 ) int -> zero-ref "field V36.Value (fldOffset=0x0)" P-INDEP -;* V66 tmp50 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V40.m_keepalive (fldOffset=0x0)" P-INDEP -; V67 tmp51 [V67,T20] ( 2, 1 ) long -> x0 "field V40.m_metadataImport2 (fldOffset=0x8)" P-INDEP -;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V42.Value (fldOffset=0x0)" P-INDEP -;* V69 tmp53 [V69 ] ( 0, 0 ) int -> zero-ref "field V46.Value (fldOffset=0x0)" P-INDEP -; V70 tmp54 [V70,T07] ( 2, 4 ) long -> x1 "argument with side effect" -; V71 tmp55 [V71,T30] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V72 tmp56 [V72,T31] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V73 tmp57 [V73,T32] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V74 tmp58 [V74,T33] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V75 tmp59 [V75,T34] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V76 PSPSym [V76,T21] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" -; V77 cse0 [V77,T08] ( 5, 3.50) int -> x24 "CSE - aggressive"
+; V56 tmp40 [V56,T17] ( 3, 1.50) int -> x1 "field V13.Value (fldOffset=0x0)" P-INDEP +;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "field V25.m_keepalive (fldOffset=0x0)" P-INDEP +; V58 tmp42 [V58,T19] ( 2, 1 ) long -> x0 "field V25.m_metadataImport2 (fldOffset=0x8)" P-INDEP +;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref "field V27.Value (fldOffset=0x0)" P-INDEP +; V60 tmp44 [V60 ] ( 1, 0.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V29.m_length (fldOffset=0x0)" P-DEP +; V61 tmp45 [V61 ] ( 2, 1 ) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V29.m_constArray (fldOffset=0x8)" P-DEP +;* V62 tmp46 [V62 ] ( 0, 0 ) int -> zero-ref "field V30.Value (fldOffset=0x0)" P-INDEP +;* V63 tmp47 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V33.m_keepalive (fldOffset=0x0)" P-INDEP +; V64 tmp48 [V64,T20] ( 2, 1 ) long -> x0 "field V33.m_metadataImport2 (fldOffset=0x8)" P-INDEP +;* V65 tmp49 [V65 ] ( 0, 0 ) int -> zero-ref "field V35.Value (fldOffset=0x0)" P-INDEP +;* V66 tmp50 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V39.m_keepalive (fldOffset=0x0)" P-INDEP +; V67 tmp51 [V67,T21] ( 2, 1 ) long -> x0 "field V39.m_metadataImport2 (fldOffset=0x8)" P-INDEP +;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V41.Value (fldOffset=0x0)" P-INDEP +;* V69 tmp53 [V69 ] ( 0, 0 ) int -> zero-ref "field V45.Value (fldOffset=0x0)" P-INDEP +; V70 tmp54 [V70,T07] ( 2, 4 ) ref -> x25 single-def "argument with side effect" +; V71 tmp55 [V71,T08] ( 2, 4 ) long -> x1 "argument with side effect" +; V72 tmp56 [V72,T31] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V73 tmp57 [V73,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V74 tmp58 [V74,T33] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V75 tmp59 [V75,T34] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V76 tmp60 [V76,T35] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V77 PSPSym [V77,T22] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V78 cse0 [V78,T09] ( 5, 3.50) int -> x24 "CSE - aggressive" +; V79 rat0 [V79,T00] ( 5, 7.50) ref -> x25 "replacement local"
; ; Lcl frame size = 56 @@ -98,7 +100,7 @@ G_M12563_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str xzr, [fp, #0x38] // [V07 loc3] add x4, sp, #128
- str x4, [fp, #0x40] // [V76 PSPSym]
+ str x4, [fp, #0x40] // [V77 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w22, w1 @@ -126,7 +128,7 @@ G_M12563_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- add x2, fp, #40 // [V30 tmp14]
+ add x2, fp, #40 // [V29 tmp13]
mov w1, w23 bl <unknown method> ; gcr arg pop 0 @@ -378,11 +380,11 @@ G_M12563_IG12: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byref bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- add x2, fp, #32 // [V38 tmp22]
+ add x2, fp, #32 // [V37 tmp21]
mov w1, w22 bl <unknown method> ; gcr arg pop 0
- ldr w25, [fp, #0x20] // [V38 tmp22]
+ ldr w25, [fp, #0x20] // [V37 tmp21]
sxtw w1, w25 mov w0, #0xD1FFAB1E cmp w24, w0 @@ -392,11 +394,11 @@ G_M12563_IG12: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byref bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- add x2, fp, #24 // [V44 tmp28]
+ add x2, fp, #24 // [V43 tmp27]
mov w1, w25 bl <unknown method> ; gcr arg pop 0
- ldr w1, [fp, #0x18] // [V44 tmp28]
+ ldr w1, [fp, #0x18] // [V43 tmp27]
;; size=64 bbWeight=0.50 PerfScore 6.75 G_M12563_IG13: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref mov x0, x19 @@ -418,17 +420,22 @@ G_M12563_IG13: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byref ;; size=40 bbWeight=0.50 PerfScore 5.25 G_M12563_IG14: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- cbz x25, G_M12563_IG16
+ cbz x25, G_M12563_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M12563_IG15: ; bbWeight=0.25, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref
+G_M12563_IG15: ; bbWeight=0.50, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25] movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32 cmp x0, x11
- csel x25, x25, xzr, eq - ;; size=24 bbWeight=0.25 PerfScore 1.38 -G_M12563_IG16: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref
+ beq G_M12563_IG17 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M12563_IG16: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] + mov x25, xzr + ; gcrRegs +[x25] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M12563_IG17: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref
mov x0, x23 ; gcrRegs +[x0] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -449,7 +456,7 @@ G_M12563_IG16: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 ; gcrRegs -[x25] ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 12.50
-G_M12563_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12563_IG18: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x23] ldr x25, [sp, #0x78] ldp x23, x24, [sp, #0x68] @@ -458,7 +465,7 @@ G_M12563_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x80 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M12563_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M12563_IG19: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -467,7 +474,7 @@ G_M12563_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x3, fp, #128 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M12563_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M12563_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
mov x19, x0 ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -507,7 +514,7 @@ G_M12563_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { brk_unix #0 ;; size=88 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1008, prolog size 52, PerfScore 100.88, instruction count 252, allocated bytes for code 1008 (MethodHash=7965ceec) for method System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)
+; Total bytes of code 1012, prolog size 52, PerfScore 102.62, instruction count 253, allocated bytes for code 1012 (MethodHash=7965ceec) for method System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)
; ============================================================ Unwind Info: @@ -518,7 +525,7 @@ Unwind Info: E bit : 0 X bit : 0 ...

+40 (+4.26%) : 14618.dasm - System.Collections.PerfFrozenDictionaryString:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

@@ -8,60 +8,60 @@ ; 0 inlinees with PGO data; 28 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 5, 8 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> -; V03 tmp2 [V03,T19] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V05 tmp4 [V05,T09] ( 6, 3 ) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V06 tmp5 [V06,T15] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V07 tmp6 [V07,T10] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp7 [V08,T06] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V09 tmp8 [V09,T28] ( 2, 1 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V10 tmp9 [V10,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V13 tmp12 [V13,T02] ( 6, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V02 tmp1 [V02,T02] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> +; V03 tmp2 [V03,T20] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V04 tmp3 [V04,T06] ( 7, 4.50) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V05 tmp4 [V05,T16] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V06 tmp5 [V06,T11] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> +; V07 tmp6 [V07,T07] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp7 [V08,T29] ( 2, 1 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V09 tmp8 [V09,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp11 [V12,T03] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V16 tmp15 [V16,T24] ( 3, 1.50) ref -> x22 class-hnd "Inline return value spill temp" <<unknown class>> -; V17 tmp16 [V17,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V18 tmp17 [V18,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> -; V19 tmp18 [V19,T22] ( 2, 2 ) int -> x19 "Inlining Arg" -;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def -; V21 tmp20 [V21,T29] ( 2, 1 ) ref -> x15 -;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref single-def -; V24 tmp23 [V24,T16] ( 4, 2 ) ref -> x15 -;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> -;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V33 tmp32 [V33,T12] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x21 "Inlining Arg" -; V35 tmp34 [V35,T03] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V36 tmp35 [V36,T25] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V37 tmp36 [V37,T11] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-INDEP -;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._comparers (fldOffset=0x8)" P-INDEP -;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V28._root (fldOffset=0x0)" P-DEP -;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V28._countAdjustment (fldOffset=0x8)" P-DEP -; V42 tmp41 [V42,T08] ( 7, 3.50) ref -> x19 "field V29._root (fldOffset=0x0)" P-INDEP -; V43 tmp42 [V43,T32] ( 2, 1 ) int -> x1 "field V29._countAdjustment (fldOffset=0x8)" P-INDEP -; V44 tmp43 [V44,T30] ( 2, 1 ) ref -> x2 single-def "field V30._root (fldOffset=0x0)" P-INDEP -; V45 tmp44 [V45,T31] ( 2, 1 ) ref -> x3 single-def "field V30._comparers (fldOffset=0x8)" P-INDEP -; V46 tmp45 [V46,T21] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V47 cse0 [V47,T26] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V48 cse1 [V48,T13] ( 5, 2.50) ref -> x22 "CSE - aggressive" -; V49 cse2 [V49,T14] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" -; V50 cse3 [V50,T17] ( 4, 2 ) ref -> x1 "CSE - moderate" -; V51 cse4 [V51,T27] ( 3, 1.50) int -> x0 "CSE - moderate" -; V52 cse5 [V52,T18] ( 4, 2 ) long -> x21 "CSE - moderate" -; V53 cse6 [V53,T05] ( 7, 4.50) long -> x20 "CSE - aggressive"
+; V15 tmp14 [V15,T25] ( 3, 1.50) ref -> x21 class-hnd "Inline return value spill temp" <<unknown class>> +; V16 tmp15 [V16,T21] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +; V17 tmp16 [V17,T08] ( 4, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> +; V18 tmp17 [V18,T23] ( 2, 2 ) int -> x20 "Inlining Arg" +;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref single-def +; V20 tmp19 [V20,T30] ( 2, 1 ) ref -> x15 +;* V21 tmp20 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref single-def +; V23 tmp22 [V23,T17] ( 4, 2 ) ref -> x15 +;* V24 tmp23 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> +;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V32 tmp31 [V32,T13] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V33 tmp32 [V33,T24] ( 2, 2 ) int -> x20 "Inlining Arg" +; V34 tmp33 [V34,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V35 tmp34 [V35,T26] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V36 tmp35 [V36,T12] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref "field V26._root (fldOffset=0x0)" P-INDEP +;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V26._comparers (fldOffset=0x8)" P-INDEP +;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-DEP +;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V27._countAdjustment (fldOffset=0x8)" P-DEP +; V41 tmp40 [V41,T09] ( 7, 3.50) ref -> x19 "field V28._root (fldOffset=0x0)" P-INDEP +; V42 tmp41 [V42,T33] ( 2, 1 ) int -> x1 "field V28._countAdjustment (fldOffset=0x8)" P-INDEP +; V43 tmp42 [V43,T31] ( 2, 1 ) ref -> x2 single-def "field V29._root (fldOffset=0x0)" P-INDEP +; V44 tmp43 [V44,T32] ( 2, 1 ) ref -> x3 single-def "field V29._comparers (fldOffset=0x8)" P-INDEP +; V45 tmp44 [V45,T22] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V46 cse0 [V46,T27] ( 3, 1.50) ref -> x3 "CSE - moderate" +; V47 cse1 [V47,T14] ( 5, 2.50) ref -> x21 "CSE - aggressive" +; V48 cse2 [V48,T15] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" +; V49 cse3 [V49,T18] ( 4, 2 ) ref -> x1 "CSE - moderate" +; V50 cse4 [V50,T28] ( 3, 1.50) int -> x0 "CSE - moderate" +; V51 cse5 [V51,T19] ( 4, 2 ) long -> x19 "CSE - moderate" +; V52 cse6 [V52,T10] ( 7, 3.50) long -> registers multi-def "CSE - moderate" +; V53 rat0 [V53,T01] ( 5, 7.50) ref -> x20 "replacement local"
; ; Lcl frame size = 0 @@ -76,39 +76,53 @@ G_M57422_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] ldr x19, [x0, #0x18] ; gcrRegs +[x19]
- cbz x19, G_M57422_IG15 - ldr x1, [x19] - movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #1 LSL #32 - cmp x1, x20 - bne G_M57422_IG13 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M57422_IG18 + mov x20, x19 + ; gcrRegs +[x20] + cbz x20, G_M57422_IG05 + ;; size=16 bbWeight=1 PerfScore 5.50 +G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #2 LSL #32 - ldr x22, [x21] - ; gcrRegs +[x22] - mov x2, x22
+ ldr x1, [x20] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M57422_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M57422_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, xzr + ; gcrRegs +[x20] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57422_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M57422_IG16 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57422_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #2 LSL #32 + ldr x21, [x19] + ; gcrRegs +[x21] + mov x2, x21
; gcrRegs +[x2]
- mov x0, x22
+ mov x0, x21
; gcrRegs +[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
; gcrRegs +[x1] ldr x3, [x1, #0x08] ; gcrRegs +[x3] cmp x3, x0
- bne G_M57422_IG05
+ bne G_M57422_IG08
ldr x2, [x1, #0x10] cmp x2, x0
- bne G_M57422_IG04 - mov x0, x19 - b G_M57422_IG12
+ bne G_M57422_IG07 + mov x0, x20 + b G_M57422_IG15
;; size=60 bbWeight=0.50 PerfScore 9.50
-G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2 x22]
+G_M57422_IG07: ; bbWeight=0.50, gcrefRegs=10000B {x0 x1 x3 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2 x21]
ldrsb wzr, [x1] mov x1, x3 mov x2, x0 @@ -124,42 +138,45 @@ G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2] +[x0]
- mov x22, x0 - ; gcrRegs +[x22] - mov x0, x20
+ mov x21, x0 + ; gcrRegs +[x21] + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #1 LSL #32 + mov x0, x22
; gcrRegs -[x0] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x23, x0
+ mov x22, x0 + ; gcrRegs +[x22] + ldr x23, [x20, #0x08]
; gcrRegs +[x23]
- ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - ldr w19, [x19, #0x18] - ; gcrRegs -[x19] - cbz x22, G_M57422_IG17 - mov x15, x22
+ ldr w20, [x20, #0x18] + ; gcrRegs -[x20] + cbz x21, G_M57422_IG20 + mov x15, x21
; gcrRegs +[x15]
- add x14, x23, #16
+ add x14, x22, #16
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14]
- ldr x2, [x21, #0xD1FFAB1E]
+ ldr x2, [x19, #0xD1FFAB1E]
; gcrRegs +[x2]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14] mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14]
- cbz x20, G_M57422_IG16
+ cbz x23, G_M57422_IG19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #2 LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x23
; gcrRegs +[x0] ...

benchmarks.run_pgo.osx.arm64.checked.mch

-28 (-28.00%) : 30334.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%) : 56925.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,22 +8,19 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg" -; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x1, x0 ; gcrRegs +[x1] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M44215_IG08 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -104,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-14.63%) : 64459.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.Canon]:get_Item(int):System.Canon:this (Tier1)

@@ -10,22 +10,17 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3.29) byref -> x0 this single-def
-; V01 TypeCtx [V01,T00] ( 5, 3.86) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def
; V02 arg1 [V02,T01] ( 5, 3.29) int -> x2 single-def
-; V03 loc0 [V03,T03] ( 10, 5 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V03 loc0 [V03,T03] ( 8, 4.29) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V07 tmp3 [V07,T09] ( 3, 0.71) long -> x3 "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T07] ( 5, 2.14) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V09 tmp5 [V09,T05] ( 3, 3.57) long -> x1 "fgMakeTemp is creating a new local variable" -; V10 tmp6 [V10,T06] ( 3, 2.86) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V12 tmp8 [V12,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V13 tmp9 [V13,T08] ( 3, 1.14) int -> x1 "Inlining Arg" -; V14 tmp10 [V14,T10] ( 4, 0.64) ref -> x1 "guarded devirt return temp" -;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren> -; V16 tmp12 [V16,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V05 tmp1 [V05,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V08 tmp4 [V08,T05] ( 3, 1.14) int -> x1 "Inlining Arg" +; V09 tmp5 [V09,T06] ( 3, 0.57) ref -> x1 "guarded devirt return temp" +;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren> +; V11 tmp7 [V11,T08] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 16 @@ -40,57 +35,44 @@ G_M13118_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; byrRegs +[x0] ldr x20, [x0, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M13118_IG12
+ cbz x20, G_M13118_IG08
ldr x1, [x20, #0x18] ; gcrRegs +[x1] ldrh w1, [x1, #0x0C] ; gcrRegs -[x1] cmp w1, #1
- beq G_M13118_IG07
+ beq G_M13118_IG05
;; size=24 bbWeight=1 PerfScore 11.50 G_M13118_IG03: ; bbWeight=0.71, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- cbnz w2, G_M13118_IG12 - ldr x0, [x20] - ldr x1, [x19, #0x38] - ldr x1, [x1] - ldr x1, [x1] - cmp x0, x1 - beq G_M13118_IG05 - ;; size=28 bbWeight=0.71 PerfScore 10.36 -G_M13118_IG04: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x0, x1
+ cbnz w2, G_M13118_IG08 + ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1 x20] +[x0]
- b G_M13118_IG06 - ;; size=16 bbWeight=0.36 PerfScore 1.07 -G_M13118_IG05: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x20] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=0.36 PerfScore 0.18 -G_M13118_IG06: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x20]
+ ;; size=24 bbWeight=0.71 PerfScore 8.21 +G_M13118_IG04: ; bbWeight=0.71, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.71 PerfScore 2.14
-G_M13118_IG07: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M13118_IG05: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
; gcrRegs -[x0] +[x20] ; byrRegs +[x0] ldr w0, [x0] ; byrRegs -[x0] cmp w2, w0
- bhs G_M13118_IG12
+ bhs G_M13118_IG08
lsl w1, w2, #1 ldr x0, [x20] movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x0, x2
- bne G_M13118_IG13
+ bne G_M13118_IG09
mov x0, x20 ; gcrRegs +[x0] movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this @@ -102,32 +84,20 @@ G_M13118_IG07: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100 mov x1, x0 ; gcrRegs +[x1] ;; size=68 bbWeight=0.29 PerfScore 5.14
-G_M13118_IG08: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M13118_IG06: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M13118_IG11 - ;; size=8 bbWeight=0.29 PerfScore 0.43 -G_M13118_IG09: ; bbWeight=0.14, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M13118_IG11 - ;; size=24 bbWeight=0.14 PerfScore 1.93 -G_M13118_IG10: ; bbWeight=0.07, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.07 PerfScore 0.11 -G_M13118_IG11: ; bbWeight=0.29, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.29 PerfScore 2.86 +G_M13118_IG07: ; bbWeight=0.29, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.29 PerfScore 0.86
-G_M13118_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13118_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -157,7 +127,7 @@ G_M13118_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M13118_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M13118_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x20 ; gcrRegs +[x0] @@ -168,10 +138,10 @@ G_M13118_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x20] mov x1, x0 ; gcrRegs +[x1]
- b G_M13118_IG08
+ b G_M13118_IG06
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 16, PerfScore 37.71, instruction count 82, allocated bytes for code 328 (MethodHash=6436ccc1) for method Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
+; Total bytes of code 280, prolog size 16, PerfScore 34.71, instruction count 70, allocated bytes for code 280 (MethodHash=6436ccc1) for method Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -182,7 +152,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.53%) : 34857.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,35 +6,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7148.433
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7148.433
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.71) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.59) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,101.06) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.70) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 7,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.59) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.74) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.59) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.59) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.59) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.74) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.74) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8 @@ -51,7 +51,7 @@ G_M28111_IG02: ; bbWeight=0.35, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG22
+ bge G_M28111_IG20
;; size=16 bbWeight=0.35 PerfScore 1.94 G_M28111_IG03: ; bbWeight=0.35, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x20, G_M28111_IG13 @@ -66,135 +66,137 @@ G_M28111_IG04: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=00 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG11
+ cbz x0, G_M28111_IG10
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG05: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG27
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG28
cmp x0, x19
- beq G_M28111_IG24
+ beq G_M28111_IG25
;; size=32 bbWeight=98.90 PerfScore 741.74 G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG11
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG11
;; size=8 bbWeight=98.90 PerfScore 148.35
-G_M28111_IG07: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG11 - ;; size=12 bbWeight=49.45 PerfScore 222.52 -G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG10
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG11 - ;; size=16 bbWeight=98.90 PerfScore 741.74 -G_M28111_IG09: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+ bne G_M28111_IG10 + ;; size=20 bbWeight=98.90 PerfScore 840.64 +G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0 ;; size=36 bbWeight=98.90 PerfScore 791.19
-G_M28111_IG10: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG24
+G_M28111_IG09: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG25
;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG11: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG10: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22
- blt G_M28111_IG04 - ;; size=12 bbWeight=99.00 PerfScore 197.99 -G_M28111_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - b G_M28111_IG22 - ;; size=4 bbWeight=0.00 PerfScore 0.00
+ bge G_M28111_IG20 + b G_M28111_IG04 + ;; size=16 bbWeight=99.00 PerfScore 296.99 +G_M28111_IG11: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + beq G_M28111_IG07 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG12: ; bbWeight=24.72, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG07 + ;; size=8 bbWeight=24.72 PerfScore 37.09
G_M28111_IG13: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
+ ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.01 G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG26
+ bhs G_M28111_IG27
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG21
+ cbz x0, G_M28111_IG19
;; size=24 bbWeight=1.00 PerfScore 9.00 G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG28
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19
- beq G_M28111_IG24 - ;; size=32 bbWeight=1.00 PerfScore 7.49 -G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG21 - ;; size=8 bbWeight=1.00 PerfScore 1.50 -G_M28111_IG17: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG21 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+ beq G_M28111_IG25 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG22 + ;; size=40 bbWeight=1.00 PerfScore 8.99 +G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG19 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG21
+ bne G_M28111_IG19
;; size=16 bbWeight=1.00 PerfScore 7.49
-G_M28111_IG19: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=36 bbWeight=1.00 PerfScore 7.99 -G_M28111_IG20: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG24 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M28111_IG21: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M28111_IG25 + ;; size=40 bbWeight=1.00 PerfScore 8.99 +G_M28111_IG19: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 blt G_M28111_IG14 ;; size=12 bbWeight=1.00 PerfScore 2.00 ...

+48 (+10.53%) : 69402.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,35 +6,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7147.148
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7147.148
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.81) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.59) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,101.22) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.80) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 7,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.59) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.74) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.59) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.59) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.59) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.74) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.74) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8 @@ -51,144 +51,153 @@ G_M28111_IG02: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG19
+ bge G_M28111_IG20
;; size=16 bbWeight=0.41 PerfScore 2.24 G_M28111_IG03: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M28111_IG12
+ cbz x20, G_M28111_IG13
;; size=4 bbWeight=0.41 PerfScore 0.41 G_M28111_IG04: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG12
+ tbnz w2, #31, G_M28111_IG13
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG12
+ blt G_M28111_IG13
;; size=20 bbWeight=0.41 PerfScore 2.44 G_M28111_IG05: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG10
+ cbz x0, G_M28111_IG09
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG24
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG28
cmp x0, x19
- beq G_M28111_IG21 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG10
+ beq G_M28111_IG25 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG11
;; size=40 bbWeight=98.90 PerfScore 890.09
-G_M28111_IG07: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG10 - ;; size=12 bbWeight=49.45 PerfScore 222.52 -G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG09
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG10
+ bne G_M28111_IG09
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.90 PerfScore 1532.93 -G_M28111_IG09: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG21
+ ;; size=56 bbWeight=98.90 PerfScore 1631.83 +G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG25
;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG10: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG09: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 blt G_M28111_IG05 ;; size=12 bbWeight=99.00 PerfScore 197.99
-G_M28111_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- b G_M28111_IG19
+ b G_M28111_IG20
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG12: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20]
+G_M28111_IG11: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x19-x20 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + beq G_M28111_IG07 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG12: ; bbWeight=24.72, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG07 + ;; size=8 bbWeight=24.72 PerfScore 37.09 +G_M28111_IG13: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.01
-G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG23
+ bhs G_M28111_IG27
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG18
+ cbz x0, G_M28111_IG19
;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG25
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19
- beq G_M28111_IG21 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG18 - ;; size=40 bbWeight=1.00 PerfScore 8.99 -G_M28111_IG15: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG18 - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ beq G_M28111_IG25 + ;; size=32 bbWeight=1.00 PerfScore 7.49
G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3]
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG22 + ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG19 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG18
+ bne G_M28111_IG19
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.48 -G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG21 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M28111_IG25 + ;; size=56 bbWeight=1.00 PerfScore 16.48
...

+48 (+10.53%) : 80079.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,35 +6,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7061.277
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7061.277
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,104.55) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.59) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,102.32) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,402.53) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 7,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.59) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.75) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.59) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.59) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.59) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.75) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.74) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8 @@ -51,7 +51,7 @@ G_M28111_IG02: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG18
+ bge G_M28111_IG17
;; size=16 bbWeight=0.77 PerfScore 4.25 G_M28111_IG03: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x20, G_M28111_IG11 @@ -66,127 +66,131 @@ G_M28111_IG04: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=00 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG08
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG05: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG23
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG25
cmp x0, x19
- beq G_M28111_IG20 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG09
+ beq G_M28111_IG22 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG09
;; size=40 bbWeight=98.90 PerfScore 890.09
-G_M28111_IG06: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG09 - ;; size=12 bbWeight=49.45 PerfScore 222.52 -G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG08
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG09
+ bne G_M28111_IG08
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.90 PerfScore 1532.94 -G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG20
+ ;; size=56 bbWeight=98.90 PerfScore 1631.84 +G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG22
;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG09: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22
- blt G_M28111_IG04 - ;; size=12 bbWeight=99.00 PerfScore 197.99 -G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - b G_M28111_IG18 - ;; size=4 bbWeight=0.00 PerfScore 0.00
+ bge G_M28111_IG17 + b G_M28111_IG04 + ;; size=16 bbWeight=99.00 PerfScore 296.99 +G_M28111_IG09: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + beq G_M28111_IG06 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG10: ; bbWeight=24.72, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG06 + ;; size=8 bbWeight=24.72 PerfScore 37.09
G_M28111_IG11: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
+ ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.01 PerfScore 0.02 G_M28111_IG12: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG22
+ bhs G_M28111_IG24
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG17
+ cbz x0, G_M28111_IG16
;; size=24 bbWeight=1.00 PerfScore 9.00 G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG24
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG21
cmp x0, x19
- beq G_M28111_IG20 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG17
+ beq G_M28111_IG22 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG19
;; size=40 bbWeight=1.00 PerfScore 8.99
-G_M28111_IG14: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG17 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG16 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG17
+ bne G_M28111_IG16
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.48
+ cbnz w0, G_M28111_IG22 + ;; size=56 bbWeight=1.00 PerfScore 16.48
G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w0, G_M28111_IG20 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 blt G_M28111_IG12 ;; size=12 bbWeight=1.00 PerfScore 2.00
-G_M28111_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG19: ; bbWeight=0.00, epilog, nogc, extend
+G_M28111_IG18: ; bbWeight=0.00, epilog, nogc, extend
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -194,10 +198,38 @@ G_M28111_IG19: ; bbWeight=0.00, epilog, nogc, extend add sp, sp, #96 ...

benchmarks.run_tiered.osx.arm64.checked.mch

-28 (-28.00%) : 4800.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%) : 6298.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%) : 39318.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%) : 28559.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M3904_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_M3904_IG07
+ bge G_M3904_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_M3904_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M3904_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M3904_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_M3904_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M3904_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_M3904_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_M3904_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, #32
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M3904_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #32
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M3904_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M3904_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_M3904_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=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():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%) : 46627.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M896_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_M896_IG07
+ bge G_M896_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M896_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M896_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M896_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_M896_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M896_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_M896_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_M896_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_M896_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_M896_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M896_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_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, e 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=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():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%) : 47139.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M40467_IG07
+ bge G_M40467_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #2 LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M40467_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M40467_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - beq G_M40467_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -65,19 +48,31 @@ G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #8
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M40467_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.osx.arm64.checked.mch

-24 (-40.00%) : 249536.dasm - CastExpansionTests:CastToGenericSystem.__Canon:System.Object:this (Tier1)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) 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, 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_M64337_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M64337_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M64337_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_M64337_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M64337_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_M64337_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M64337_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=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
; ============================================================ 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)

-24 (-28.57%) : 582539.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%) : 1989.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 374915.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)

@@ -5,20 +5,19 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 29608
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 29608
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <ILCompiler.ReadyToRunCompilationModuleGroupBase> -; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x1 class-hnd single-def <Internal.TypeSystem.TypeDesc> -; V02 loc0 [V02,T04] ( 4, 3.50) ref -> x1 class-hnd exact <Internal.TypeSystem.Ecma.EcmaType>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x19 this class-hnd single-def <ILCompiler.ReadyToRunCompilationModuleGroupBase> +; V01 arg1 [V01,T01] ( 6, 4 ) ref -> x1 class-hnd single-def <Internal.TypeSystem.TypeDesc> +; V02 loc0 [V02,T05] ( 5, 3 ) ref -> x1 class-hnd exact single-def <Internal.TypeSystem.Ecma.EcmaType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.Ecma.EcmaType> -; V06 tmp3 [V06,T05] ( 3, 2 ) ref -> x1 "guarded devirt return temp" -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> -; V08 tmp5 [V08,T03] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaModule> -; V09 tmp6 [V09,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V04 tmp1 [V04,T06] ( 3, 2 ) ref -> x1 "guarded devirt return temp" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> +; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaModule> +; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V08 rat0 [V08,T00] ( 6, 7.50) ref -> x1 "replacement local"
; ; Lcl frame size = 8 @@ -36,19 +35,14 @@ G_M4376_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x0, x2
- bne G_M4376_IG09
+ bne G_M4376_IG11
;; size=24 bbWeight=1 PerfScore 6.00 G_M4376_IG03: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- cbz x1, G_M4376_IG07
+ cbnz x1, G_M4376_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4376_IG04: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - bne G_M4376_IG07 - ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M4376_IG04: ; bbWeight=0.75, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M4376_IG09 + ;; size=4 bbWeight=0.75 PerfScore 0.75
G_M4376_IG05: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref ldr x1, [x1, #0x58] ldr x0, [x19, #0x08] @@ -68,15 +62,31 @@ G_M4376_IG06: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-G_M4376_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M4376_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1 x19] + ldr x0, [x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x0, x2 + beq G_M4376_IG04 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M4376_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + cbnz x1, G_M4376_IG05 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M4376_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1 x19]
mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M4376_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M4376_IG10: ; bbWeight=0, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M4376_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4376_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1 x19] mov x0, x1 ; gcrRegs +[x0] @@ -90,7 +100,7 @@ G_M4376_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80002 { b G_M4376_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 32.50, instruction count 41, allocated bytes for code 164 (MethodHash=cc74eee7) for method ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 33.62, instruction count 44, allocated bytes for code 176 (MethodHash=cc74eee7) for method ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -101,7 +111,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)

+40 (+7.52%) : 260351.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,127 +10,131 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T08] ( 9, 8.72) ref -> x20 class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T02] ( 13, 20.34) ref -> x19 class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T11] ( 5, 4 ) int -> x3 single-def -; V04 arg4 [V04,T12] ( 3, 3 ) int -> x4 single-def -; V05 loc0 [V05,T10] ( 7, 8.70) int -> x21 -; V06 loc1 [V06,T14] ( 7, 0 ) int -> x0 -; V07 loc2 [V07,T01] ( 13, 22.85) int -> x22
+; V01 arg1 [V01,T09] ( 9, 8.72) ref -> x20 class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T07] ( 9, 11.90) ref -> x19 class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T12] ( 5, 4 ) int -> x3 single-def +; V04 arg4 [V04,T13] ( 3, 3 ) int -> x4 single-def +; V05 loc0 [V05,T11] ( 7, 8.70) int -> x21 +; V06 loc1 [V06,T16] ( 7, 0 ) int -> x0 +; V07 loc2 [V07,T02] ( 13, 22.85) int -> x22
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T06] ( 6, 9.37) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10, 29.06) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T10] ( 6, 9.37) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10, 29.06) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 9, 16.91) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T09] ( 4, 8.44) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4, 16.87) byref -> registers "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8, 16.87) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4, 16.87) byref -> registers "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T13] ( 3, 0.14) ref -> x0 "CSE - conservative" -; V21 cse1 [V21,T05] ( 3, 13.92) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3, 12.53) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T15] ( 3, 0.14) ref -> x0 "CSE - conservative" +; V20 cse1 [V20,T06] ( 3, 13.92) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T08] ( 3, 12.53) int -> x2 "CSE - aggressive" +; V22 rat0 [V22,T00] ( 5, 31.32) ref -> x23 "replacement local" +; V23 rat1 [V23,T14] ( 5, 0.32) ref -> x23 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x20, x1 ; gcrRegs +[x20] mov x19, x2 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add w21, w3, w4
- cbz x19, G_M28111_IG24
+ cbz x19, G_M28111_IG30
sxtw w22, w3 cmp w22, w21
- bge G_M28111_IG20
+ bge G_M28111_IG26
;; size=20 bbWeight=1 PerfScore 3.50 G_M28111_IG03: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M28111_IG14
+ cbz x20, G_M28111_IG17
orr w2, w22, w21
- tbnz w2, #31, G_M28111_IG14
+ tbnz w2, #31, G_M28111_IG17
ldr w2, [x20, #0x08] cmp w2, w21
- blt G_M28111_IG14
+ blt G_M28111_IG17
;; size=24 bbWeight=0.99 PerfScore 6.96 G_M28111_IG04: ; bbWeight=4.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w22, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG12
ldr x2, [x0] ; byrRegs -[x2] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG13
+ bne G_M28111_IG14
;; size=36 bbWeight=4.64 PerfScore 48.72 G_M28111_IG05: ; bbWeight=4.18, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz cmp x0, x19
- beq G_M28111_IG11
+ beq G_M28111_IG15
;; size=8 bbWeight=4.18 PerfScore 6.26 G_M28111_IG06: ; bbWeight=4.18, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x3, x19 - ; gcrRegs +[x3] - ldr x2, [x3]
+ mov x23, x19 + ; gcrRegs +[x23] + cbz x23, G_M28111_IG09 + ;; size=8 bbWeight=4.18 PerfScore 6.26 +G_M28111_IG07: ; bbWeight=2.09, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ldr x2, [x23]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG09
+ beq G_M28111_IG09 + ;; size=24 bbWeight=2.09 PerfScore 12.53 +G_M28111_IG08: ; bbWeight=1.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + ;; size=4 bbWeight=1.04 PerfScore 0.52 +G_M28111_IG09: ; bbWeight=4.18, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG12
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG09 - ;; size=44 bbWeight=4.18 PerfScore 58.46 -G_M28111_IG07: ; bbWeight=4.18, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x3]
+ bne G_M28111_IG12 + ;; size=20 bbWeight=4.18 PerfScore 35.50 +G_M28111_IG10: ; bbWeight=4.18, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0 ;; size=36 bbWeight=4.18 PerfScore 33.41
-G_M28111_IG08: ; bbWeight=4.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG11
+G_M28111_IG11: ; bbWeight=4.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG15
;; size=4 bbWeight=4.64 PerfScore 4.64
-G_M28111_IG09: ; bbWeight=4.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG12: ; bbWeight=4.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1 cmp w22, w21 blt G_M28111_IG04 ;; size=12 bbWeight=4.67 PerfScore 9.34
-G_M28111_IG10: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- b G_M28111_IG20
+ b G_M28111_IG26
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M28111_IG11: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, w22 - ;; size=4 bbWeight=0.97 PerfScore 0.49 -G_M28111_IG12: ; bbWeight=0.97, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.97 PerfScore 3.89 -G_M28111_IG13: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG14: ; bbWeight=0.46, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x19-x20] mov x1, x19 ; gcrRegs +[x1] @@ -140,45 +144,67 @@ G_M28111_IG13: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- b G_M28111_IG08
+ b G_M28111_IG11
;; size=24 bbWeight=0.46 PerfScore 5.34
-G_M28111_IG14: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG15: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19-x20] + mov w0, w22 + ;; size=4 bbWeight=0.97 PerfScore 0.49 +G_M28111_IG16: ; bbWeight=0.97, 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=0.97 PerfScore 5.83 +G_M28111_IG17: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19-x20]
ldr w2, [x20, #0x08] cmp w22, w2
- bhs G_M28111_IG23
+ bhs G_M28111_IG29
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w22, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG19
+ cbz x0, G_M28111_IG25
ldr x2, [x0] ; byrRegs -[x2] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG22
+ bne G_M28111_IG28
;; size=48 bbWeight=0.05 PerfScore 0.70
-G_M28111_IG15: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG18: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x19
- beq G_M28111_IG11
+ beq G_M28111_IG15
;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M28111_IG16: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - mov x3, x19 - ; gcrRegs +[x3] - ldr x2, [x3]
+G_M28111_IG19: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + mov x23, x19 + ; gcrRegs +[x23] + cbz x23, G_M28111_IG22 + ;; size=8 bbWeight=0.04 PerfScore 0.06 +G_M28111_IG20: ; bbWeight=0.02, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ldr x2, [x23]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG19
+ beq G_M28111_IG22 + ;; size=24 bbWeight=0.02 PerfScore 0.13
...

+48 (+8.63%) : 480205.dasm - Testinstanceassignment_struct01:TestEntryPoint():int (FullOpts)

@@ -14,9 +14,9 @@ ;* V03 loc3 [V03 ] ( 0, 0 ) double -> zero-ref ld-addr-op ;* V04 loc4 [V04,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String> ;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.String>
-; V06 loc6 [V06,T02] ( 4, 4.00) ref -> x19 class-hnd exact single-def <System.Int32>
+; V06 loc6 [V06,T03] ( 5, 4.50) ref -> x19 class-hnd exact single-def <System.Int32>
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.Object>
-; V08 loc8 [V08,T00] ( 13, 13.00) struct (16) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op <System.Guid>
+; V08 loc8 [V08,T00] ( 13, 13 ) struct (16) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op <System.Guid>
;* V09 loc9 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Guid> ;* V10 loc10 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[int]> ;* V11 loc11 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[double]> @@ -24,7 +24,7 @@ ;* V13 loc13 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[System.Object]> ;* V14 loc14 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[System.Guid]> ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T01] ( 3, 6.00) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V16 tmp1 [V16,T02] ( 3, 6.00) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -53,24 +53,24 @@ ;* V42 tmp27 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V43 tmp28 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp29 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V45 tmp30 [V45,T08] ( 2, 2.00) ubyte -> x0 "Inline return value spill temp"
+; V45 tmp30 [V45,T10] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
;* V46 tmp31 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-;* V47 tmp32 [V47,T10] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Int32> -; V48 tmp33 [V48,T03] ( 2, 4.00) byref -> x0 single-def "Inlining Arg" -; V49 tmp34 [V49,T04] ( 2, 4.00) int -> x0 "impAppendStmt" -;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> -;* V51 tmp36 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> -;* V52 tmp37 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> -;* V54 tmp39 [V54 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> -;* V55 tmp40 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V56 tmp41 [V56 ] ( 0, 0 ) simd16 -> zero-ref "V51.[000..016)" -;* V57 tmp42 [V57 ] ( 0, 0 ) simd16 -> zero-ref "V54.[000..016)" -; V58 cse0 [V58,T06] ( 3, 3.00) int -> x19 "CSE - aggressive" -; V59 cse1 [V59,T07] ( 3, 3.00) long -> x19 "CSE - aggressive" -; V60 cse2 [V60,T05] ( 3, 3.00) byref -> x20 "CSE - aggressive" -; V61 rat0 [V61,T09] ( 2, 2.00) long -> x0 "Spilling to split statement for tree" -; V62 rat1 [V62,T17] ( 3, 6.00) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V47 tmp32 [V47,T07] ( 2, 3.00) byref -> x0 single-def "Inlining Arg" +; V48 tmp33 [V48,T08] ( 2, 2.00) int -> x0 "impAppendStmt" +;* V49 tmp34 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> +;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> +;* V51 tmp36 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V52 tmp37 [V52 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> +;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> +;* V54 tmp39 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V55 tmp40 [V55 ] ( 0, 0 ) simd16 -> zero-ref "V50.[000..016)" +;* V56 tmp41 [V56 ] ( 0, 0 ) simd16 -> zero-ref "V53.[000..016)" +; V57 cse0 [V57,T05] ( 3, 3 ) int -> x19 "CSE - aggressive" +; V58 cse1 [V58,T06] ( 3, 3 ) long -> x19 "CSE - aggressive" +; V59 cse2 [V59,T04] ( 3, 3.00) byref -> x20 "CSE - aggressive" +; V60 rat0 [V60,T09] ( 2, 2 ) long -> x0 "Spilling to split statement for tree" +; V61 rat1 [V61,T01] ( 5, 7.50) ref -> x1 "replacement local" +; V62 rat2 [V62,T17] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 16 @@ -131,11 +131,35 @@ G_M11907_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs +[x20] mov x0, x20 ; byrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1] + cbz x1, G_M11907_IG05 + ;; size=188 bbWeight=1.00 PerfScore 43.00 +G_M11907_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=100001 {x0 x20}, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M11907_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M11907_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.13 +G_M11907_IG05: ; bbWeight=1.00, gcrefRegs=80002 {x1 x19}, byrefRegs=100001 {x0 x20}, byref, isz + cbz x1, G_M11907_IG13 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M11907_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref + ; gcrRegs -[x1]
ldr w0, [x0] ; byrRegs -[x0] ldr w1, [x19, #0x08] cmp w0, w1 cset x0, eq
+ ;; size=16 bbWeight=0.50 PerfScore 3.50 +G_M11907_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
movz x1, #0xD1FFAB1E // code for Test_instance_assignment_struct01:Eval(ubyte) movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -196,13 +220,13 @@ G_M11907_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr w1, [x1]
- tbz w1, #0, G_M11907_IG08 - ;; size=424 bbWeight=1.00 PerfScore 105.00 -G_M11907_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w1, #0, G_M11907_IG14 + ;; size=228 bbWeight=1 PerfScore 56.50 +G_M11907_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x48]
- cbz w0, G_M11907_IG06 - ;; size=8 bbWeight=1.00 PerfScore 4.00 -G_M11907_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbz w0, G_M11907_IG11 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M11907_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #164 LSL #16 movk x0, #1 LSL #32 @@ -213,12 +237,12 @@ G_M11907_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x1 mov w0, #100 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M11907_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M11907_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M11907_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11907_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #164 LSL #16 movk x0, #1 LSL #32 @@ -229,18 +253,26 @@ G_M11907_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 mov w0, #1 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M11907_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M11907_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M11907_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11907_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref + ; gcrRegs +[x19] + ; byrRegs +[x20] + mov w0, wzr + b G_M11907_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M11907_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20]
mov w1, #18 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M11907_IG03
+ b G_M11907_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 556, prolog size 16, PerfScore 123.00, instruction count 139, allocated bytes for code 556 (MethodHash=70b8d17c) for method Test_instance_assignment_struct01:TestEntryPoint():int (FullOpts)
+; Total bytes of code 604, prolog size 16, PerfScore 125.12, instruction count 151, allocated bytes for code 604 (MethodHash=70b8d17c) for method Test_instance_assignment_struct01:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info: @@ -251,7 +283,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 139 (0x0008b) Actual length = 556 (0x00022c)
+ Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
---- 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

-40 (-35.71%) : 135236.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)

@@ -8,65 +8,41 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x20 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov x21, x20 - ; gcrRegs +[x21] - cbz x21, G_M12636_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x22, [x21]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x22, x0 - beq G_M12636_IG05 - ;; size=32 bbWeight=0.25 PerfScore 3.12 -G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - mov x1, x20
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x20] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M12636_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ; gcrRegs -[x1] +[x0] + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 112, prolog size 20, PerfScore 17.88, instruction count 28, allocated bytes for code 112 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.00, instruction count 18, allocated bytes for code 72 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ 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) @@ -85,9 +61,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 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%) : 79603.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%) : 183931.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -8,41 +8,28 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon> -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M8451_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -50,22 +37,14 @@ G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -76,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -84,9 +63,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+4 (+1.09%) : 34694.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%) : 179259.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%) : 191095.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%) : 179614.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 109095.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M7606_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-33.33%) : 271829.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

+44 (+10.09%) : 262585.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

@@ -8,29 +8,29 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> -; V01 arg1 [V01,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> -; V02 arg2 [V02,T04] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> -; V03 arg3 [V03,T07] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> -; V04 arg4 [V04,T08] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> -; V05 arg5 [V05,T05] ( 4, 3.50) int -> x21 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> +; V01 arg1 [V01,T07] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> +; V03 arg3 [V03,T08] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> +; V04 arg4 [V04,T09] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> +; V05 arg5 [V05,T06] ( 4, 3.50) int -> x21 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T01] ( 12, 22 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl> -;* V09 tmp2 [V09,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V13 tmp6 [V13,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V15 tmp8 [V15,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V17 tmp10 [V17,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V19 tmp12 [V19,T02] ( 7, 12 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V20 tmp13 [V20,T13] ( 3, 2.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp14 [V21,T10] ( 4, 3 ) int -> x15 "Inline stloc first use temp" -; V22 cse0 [V22,T11] ( 3, 3 ) ref -> x25 "CSE - aggressive"
+; V08 tmp1 [V08,T00] ( 12, 22 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl> +;* V09 tmp2 [V09,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp3 [V10,T01] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V12 tmp5 [V12,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V14 tmp7 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V15 tmp8 [V15,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V17 tmp10 [V17,T03] ( 7, 12 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T14] ( 3, 2.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V19 tmp12 [V19,T12] ( 4, 3 ) int -> x15 "Inline stloc first use temp" +; V20 cse0 [V20,T13] ( 3, 3 ) ref -> x25 "CSE - aggressive" +; V21 rat0 [V21,T11] ( 3, 2.50) ref -> x1 "replacement local" +; V22 rat1 [V22,T02] ( 3, 10 ) ref -> x14 "replacement local"
; ; Lcl frame size = 8 @@ -64,7 +64,7 @@ G_M54407_IG02: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr ; gcrRegs -[x0] ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbnz x0, G_M54407_IG08
+ cbnz x0, G_M54407_IG11
;; size=32 bbWeight=1 PerfScore 10.00 G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -74,27 +74,48 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, movk x25, #0xD1FFAB1E LSL #16 movk x25, #1 LSL #32 cmp x0, x25
- bne G_M54407_IG05 - b G_M54407_IG08 - ;; size=28 bbWeight=0.50 PerfScore 2.25 -G_M54407_IG04: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG11 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M54407_IG08 + ;; size=32 bbWeight=0.50 PerfScore 2.50 +G_M54407_IG04: ; bbWeight=0.25, gcrefRegs=3D80003 {x0 x1 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M54407_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + b G_M54407_IG08 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M54407_IG06: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
cmp x0, x25
- beq G_M54407_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M54407_IG05: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG10 + mov x14, x0 + ; gcrRegs +[x14] + cbz x14, G_M54407_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M54407_IG07: ; bbWeight=1, gcrefRegs=3D84001 {x0 x14 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + ldr x14, [x14] + ; gcrRegs -[x14] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M54407_IG08: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M54407_IG04
+ cbnz x0, G_M54407_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M54407_IG06: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M54407_IG09: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x25]
- b G_M54407_IG08
+ b G_M54407_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - tbnz w21, #4, G_M54407_IG08
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz + tbnz w21, #4, G_M54407_IG11
add x14, x19, #64 ; byrRegs +[x14] mov x15, x20 @@ -103,7 +124,7 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -115,9 +136,9 @@ G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr movk x14, #0xD1FFAB1E LSL #16 movk x14, #1 LSL #32 ldr w14, [x14]
- tbz w14, #0, G_M54407_IG14
+ tbz w14, #0, G_M54407_IG17
;; size=40 bbWeight=1 PerfScore 8.50
-G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x14, #0xD1FFAB1E LSL #16 @@ -178,9 +199,9 @@ G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M54407_IG11
+ bls G_M54407_IG14
;; size=136 bbWeight=1 PerfScore 34.50
-G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG13: ; bbWeight=0.50, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] add w12, w15, #1 str w12, [x0, #0x10] @@ -193,9 +214,9 @@ G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- b G_M54407_IG12
+ b G_M54407_IG15
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M54407_IG11: ; bbWeight=0.50, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.50, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov x1, x25 ; gcrRegs +[x1] @@ -206,11 +227,11 @@ G_M54407_IG11: ; bbWeight=0.50, gcrefRegs=2000001 {x0 x25}, byrefRegs=000 blr x2 ; gcrRegs -[x0-x1] ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -218,17 +239,17 @@ G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M54407_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M54407_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x20 x22-x24] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 mov w1, #212 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M54407_IG09
+ b G_M54407_IG12
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 24, PerfScore 126.00, instruction count 109, allocated bytes for code 436 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 480, prolog size 24, PerfScore 134.25, instruction count 120, allocated bytes for code 480 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -239,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+12.79%) : 262575.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 3, 1.50) int -> x0 "CSE - moderate" -; V16 cse1 [V16,T03] ( 3, 3 ) ref -> x20 "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V13 cse0 [V13,T07] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T05] ( 3, 3 ) ref -> x20 "CSE - aggressive" +; V15 rat0 [V15,T04] ( 3, 2.50) ref -> x1 "replacement local" +; V16 rat1 [V16,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -66,37 +66,58 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x0] ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- cbnz w0, G_M47746_IG11
+ cbnz w0, G_M47746_IG14
ldr w0, [x19, #0x88]
- tbnz w0, #5, G_M47746_IG11
+ tbnz w0, #5, G_M47746_IG14
mov x0, x19 ; gcrRegs +[x0] movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32 cmp x0, x20
- bne G_M47746_IG09 - b G_M47746_IG10 - ;; size=48 bbWeight=0.50 PerfScore 7.75 -G_M47746_IG08: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG13 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=52 bbWeight=0.50 PerfScore 8.00 +G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M47746_IG12 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M47746_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M47746_IG10: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M47746_IG11 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M47746_IG09: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG14 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M47746_IG11: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M47746_IG12: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M47746_IG08
+ cbnz x0, G_M47746_IG10
;; size=20 bbWeight=4 PerfScore 44.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20] ldr w0, [x19, #0x88] and w1, w0, #0xD1FFAB1E cmp w1, #0xD1FFAB1E
- beq G_M47746_IG11 - tbnz w0, #5, G_M47746_IG12
+ beq G_M47746_IG14 + tbnz w0, #5, G_M47746_IG15
mov x0, x19 ; gcrRegs +[x0] mov w1, #6 @@ -106,7 +127,7 @@ G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ;; size=48 bbWeight=0.50 PerfScore 6.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -130,7 +151,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] b G_M47746_IG03 ;; size=68 bbWeight=0.50 PerfScore 9.25
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -162,7 +183,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 344, prolog size 12, PerfScore 83.50, instruction count 86, allocated bytes for code 344 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 388, prolog size 12, PerfScore 91.75, instruction count 97, allocated bytes for code 388 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================ Unwind Info: @@ -173,7 +194,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 344 (0x000158)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+22.45%) : 262610.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 3, 1.50) ref -> x0 "CSE - moderate" -; V15 cse1 [V15,T02] ( 3, 4 ) ref -> x20 "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V12 cse0 [V12,T07] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V13 cse1 [V13,T03] ( 3, 4 ) ref -> x20 "CSE - aggressive" +; V14 rat0 [V14,T05] ( 3, 2.50) ref -> x1 "replacement local" +; V15 rat1 [V15,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -42,49 +42,69 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32 cmp x0, x20
- bne G_M32453_IG05
+ beq G_M32453_IG12
;; size=28 bbWeight=1 PerfScore 6.50
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20] + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M32453_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M32453_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0 x20]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M32453_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M32453_IG05: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M32453_IG10 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M32453_IG07: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M32453_IG08: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M32453_IG04
+ cbnz x0, G_M32453_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
- b G_M32453_IG09
+ b G_M32453_IG12
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbz x0, G_M32453_IG11
+ cbz x0, G_M32453_IG14
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -116,7 +136,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 62.75, instruction count 49, allocated bytes for code 196 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 240, prolog size 12, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================ Unwind Info: @@ -127,7 +147,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- 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%) : 541740.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)

-28 (-46.67%) : 569340.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4446 ; 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%) : 62225.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)

+24 (+18.75%) : 48175.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.26) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.22) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.20) 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 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T03] ( 2, 0.10) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T02] ( 3, 0.11) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.10) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.18) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_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 @@ -56,34 +56,48 @@ G_M12969_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x2, x3
- bne G_M12969_IG11
+ bne G_M12969_IG12
;; size=24 bbWeight=0.04 PerfScore 0.24
-G_M12969_IG09: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG09: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG14 + ;; size=4 bbWeight=0.02 PerfScore 0.02 +G_M12969_IG10: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.02 PerfScore 0.21 -G_M12969_IG10: ; bbWeight=0.02, epilog, nogc, extend
+ ;; size=16 bbWeight=0.02 PerfScore 0.11 +G_M12969_IG11: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.05
-G_M12969_IG11: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.02 PerfScore 0.15
-G_M12969_IG12: ; bbWeight=0.02, epilog, nogc, extend
+G_M12969_IG13: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.03
+G_M12969_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M12969_IG10 + ;; size=24 bbWeight=0.01 PerfScore 0.07 +G_M12969_IG15: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG10 + ;; size=8 bbWeight=0.01 PerfScore 0.01
-; Total bytes of code 128, prolog size 8, PerfScore 6.39, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.40, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ 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)

+24 (+18.75%) : 49939.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.13) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
-; V01 arg1 [V01,T01] ( 7, 3.11) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
+; V01 arg1 [V01,T01] ( 6, 3.10) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0.98) ubyte -> x0 "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V06 tmp4 [V06,T04] ( 2, 0.05) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V07 cse0 [V07,T03] ( 3, 0.05) long -> x3 "CSE - conservative"
+; V06 tmp4 [V06,T04] ( 2, 0.05) ref -> x1 single-def "argument with side effect" +; V07 rat0 [V07,T03] ( 5, 0.09) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M530_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M530_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 @@ -31,7 +31,7 @@ G_M530_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byr G_M530_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, #1
- b G_M530_IG09
+ b G_M530_IG10
;; size=8 bbWeight=0.42 PerfScore 0.63 G_M530_IG04: ; bbWeight=0.08, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -41,7 +41,7 @@ G_M530_IG04: ; bbWeight=0.08, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, G_M530_IG05: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, wzr
- b G_M530_IG09
+ b G_M530_IG10
;; size=8 bbWeight=0.06 PerfScore 0.09 G_M530_IG06: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -50,40 +50,54 @@ G_M530_IG06: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x2, x3
- bne G_M530_IG10
+ bne G_M530_IG13
;; size=24 bbWeight=0.02 PerfScore 0.12
-G_M530_IG07: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M530_IG07: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M530_IG11 + ;; size=4 bbWeight=0.01 PerfScore 0.01 +G_M530_IG08: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.01 PerfScore 0.10 -G_M530_IG08: ; bbWeight=0.01, epilog, nogc, extend
+ ;; size=16 bbWeight=0.01 PerfScore 0.05 +G_M530_IG09: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M530_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M530_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M530_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M530_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M530_IG08 + ;; size=24 bbWeight=0.01 PerfScore 0.04 +G_M530_IG12: ; bbWeight=0.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M530_IG08 + ;; size=8 bbWeight=0.00 PerfScore 0.00 +G_M530_IG13: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.01 PerfScore 0.07
-G_M530_IG11: ; bbWeight=0.01, epilog, nogc, extend
+G_M530_IG14: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.02
-; Total bytes of code 128, prolog size 8, PerfScore 5.22, instruction count 32, allocated bytes for code 128 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 5.22, instruction count 38, allocated bytes for code 152 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ 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)

+24 (+18.75%) : 82583.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.25) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.20) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.18) 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 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T03] ( 2, 0.11) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T02] ( 3, 0.13) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.11) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.21) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_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 @@ -58,34 +58,48 @@ G_M12969_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x2, x3
- bne G_M12969_IG12
+ bne G_M12969_IG13
;; size=24 bbWeight=0.05 PerfScore 0.30
-G_M12969_IG10: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG10: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG15 + ;; size=4 bbWeight=0.03 PerfScore 0.03 +G_M12969_IG11: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.03 PerfScore 0.24 -G_M12969_IG11: ; bbWeight=0.03, epilog, nogc, extend
+ ;; size=16 bbWeight=0.03 PerfScore 0.13 +G_M12969_IG12: ; bbWeight=0.03, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.03 PerfScore 0.06
-G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG13: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.02 PerfScore 0.19
-G_M12969_IG13: ; bbWeight=0.02, epilog, nogc, extend
+G_M12969_IG14: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.04
+G_M12969_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M12969_IG11 + ;; size=24 bbWeight=0.01 PerfScore 0.09 +G_M12969_IG16: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG11 + ;; size=8 bbWeight=0.01 PerfScore 0.01
-; Total bytes of code 128, prolog size 8, PerfScore 6.47, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.48, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ 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)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-28 (-46.67%) : 35961.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%) : 139841.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%) : 30326.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%) : 94559.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

+40 (+43.48%) : 92588.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

+48 (+92.31%) : 94325.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%) : 29640.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%) : 17016.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)

+8 (+0.37%) : 27312.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

@@ -8,17 +8,17 @@ ; 0 inlinees with PGO data; 26 single block inlinees; 28 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T18] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
+; V00 this [V00,T19] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Reflection.Metadata.EntityHandle>
-; V02 arg2 [V02,T64] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
+; V02 arg2 [V02,T65] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
; V03 loc0 [V03,T00] ( 13, 29 ) ref -> x21 class-hnd <<unknown class>>
-; V04 loc1 [V04,T36] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc1 [V04,T37] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Microsoft.Cci.SecurityAttribute> ; V06 loc3 [V06 ] ( 7, 10.50) struct (24) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]>
-; V07 loc4 [V07,T29] ( 3, 12 ) short -> x22
+; V07 loc4 [V07,T30] ( 3, 12 ) short -> x22
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
-; V10 tmp2 [V10,T16] ( 4, 14 ) ref -> x21
+; V10 tmp2 [V10,T17] ( 4, 14 ) ref -> x21
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V12 tmp4 [V12,T14] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomAttribute]> @@ -27,110 +27,109 @@ ; V16 tmp8 [V16,T07] ( 4, 20 ) short -> x24 "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Cci.ICustomAttribute> ;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V19 tmp11 [V19,T19] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V19 tmp11 [V19,T20] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V21 tmp13 [V21,T20] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V21 tmp13 [V21,T21] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V23 tmp15 [V23,T71] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V24 tmp16 [V24,T21] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V25 tmp17 [V25,T53] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
+;* V23 tmp15 [V23,T72] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 tmp16 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V25 tmp17 [V25,T54] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V27 tmp19 [V27 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" -;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V29 tmp21 [V29,T15] ( 8, 15 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> -;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -; V31 tmp23 [V31,T22] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> -;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V33 tmp25 [V33,T45] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> -; V34 tmp26 [V34,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V35 tmp27 [V35,T40] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" -;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V37 tmp29 [V37,T08] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" -; V38 tmp30 [V38,T30] ( 3, 12 ) int -> x3 "Inlining Arg" -; V39 tmp31 [V39,T04] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" -; V40 tmp32 [V40,T37] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V41 tmp33 [V41,T54] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V42 tmp34 [V42,T23] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V43 tmp35 [V43,T24] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V44 tmp36 [V44,T61] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V45 tmp37 [V45,T31] ( 3, 12 ) int -> x1 "Inlining Arg" -; V46 tmp38 [V46,T47] ( 2, 8 ) long -> x1 "Inlining Arg" -; V47 tmp39 [V47,T11] ( 4, 16 ) long -> x2 "Inlining Arg" -; V48 tmp40 [V48,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V49 tmp41 [V49,T41] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V51 tmp43 [V51,T09] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" -; V52 tmp44 [V52,T32] ( 3, 12 ) int -> x2 "Inlining Arg" -; V53 tmp45 [V53,T05] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" -; V54 tmp46 [V54,T38] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V55 tmp47 [V55,T55] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V56 tmp48 [V56,T25] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V57 tmp49 [V57,T26] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V58 tmp50 [V58,T62] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V59 tmp51 [V59,T33] ( 3, 12 ) int -> x1 "Inlining Arg" -; V60 tmp52 [V60,T48] ( 2, 8 ) long -> x1 "Inlining Arg" -; V61 tmp53 [V61,T12] ( 4, 16 ) long -> x2 "Inlining Arg" -; V62 tmp54 [V62,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V63 tmp55 [V63,T42] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V64 tmp56 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V65 tmp57 [V65,T10] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" -; V66 tmp58 [V66,T34] ( 3, 12 ) int -> x2 "Inlining Arg" -; V67 tmp59 [V67,T06] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" -; V68 tmp60 [V68,T39] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V69 tmp61 [V69,T56] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V70 tmp62 [V70,T27] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V71 tmp63 [V71,T28] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V72 tmp64 [V72,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V73 tmp65 [V73,T35] ( 3, 12 ) int -> x1 "Inlining Arg" -; V74 tmp66 [V74,T49] ( 2, 8 ) long -> x1 "Inlining Arg" -; V75 tmp67 [V75,T13] ( 4, 16 ) long -> x2 "Inlining Arg"
+; V27 tmp19 [V27,T16] ( 7, 14 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> +;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> +; V29 tmp21 [V29,T23] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> +;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V31 tmp23 [V31,T46] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> +; V32 tmp24 [V32,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V33 tmp25 [V33,T41] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" +;* V34 tmp26 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V35 tmp27 [V35,T08] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" +; V36 tmp28 [V36,T31] ( 3, 12 ) int -> x3 "Inlining Arg" +; V37 tmp29 [V37,T04] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" +; V38 tmp30 [V38,T38] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V39 tmp31 [V39,T55] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V40 tmp32 [V40,T24] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V41 tmp33 [V41,T25] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V42 tmp34 [V42,T62] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V43 tmp35 [V43,T32] ( 3, 12 ) int -> x1 "Inlining Arg" +; V44 tmp36 [V44,T48] ( 2, 8 ) long -> x1 "Inlining Arg" +; V45 tmp37 [V45,T11] ( 4, 16 ) long -> x2 "Inlining Arg" +; V46 tmp38 [V46,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V47 tmp39 [V47,T42] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V48 tmp40 [V48 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V49 tmp41 [V49,T09] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" +; V50 tmp42 [V50,T33] ( 3, 12 ) int -> x2 "Inlining Arg" +; V51 tmp43 [V51,T05] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" +; V52 tmp44 [V52,T39] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V53 tmp45 [V53,T56] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V54 tmp46 [V54,T26] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V55 tmp47 [V55,T27] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V56 tmp48 [V56,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V57 tmp49 [V57,T34] ( 3, 12 ) int -> x1 "Inlining Arg" +; V58 tmp50 [V58,T49] ( 2, 8 ) long -> x1 "Inlining Arg" +; V59 tmp51 [V59,T12] ( 4, 16 ) long -> x2 "Inlining Arg" +; V60 tmp52 [V60,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V61 tmp53 [V61,T43] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V63 tmp55 [V63,T10] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" +; V64 tmp56 [V64,T35] ( 3, 12 ) int -> x2 "Inlining Arg" +; V65 tmp57 [V65,T06] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" +; V66 tmp58 [V66,T40] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V67 tmp59 [V67,T57] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V68 tmp60 [V68,T28] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V69 tmp61 [V69,T29] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V70 tmp62 [V70,T64] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V71 tmp63 [V71,T36] ( 3, 12 ) int -> x1 "Inlining Arg" +; V72 tmp64 [V72,T50] ( 2, 8 ) long -> x1 "Inlining Arg" +; V73 tmp65 [V73,T13] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V74 tmp66 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V75 tmp67 [V75 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V77 tmp69 [V77 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V79 tmp71 [V79,T77] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V80 tmp72 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V81 tmp73 [V81,T65] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V82 tmp74 [V82,T74] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V83 tmp75 [V83,T72] ( 4, 2 ) ref -> x1 -; V84 tmp76 [V84,T66] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V85 tmp77 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V86 tmp78 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V87 tmp79 [V87,T67] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> -; V88 tmp80 [V88,T75] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V89 tmp81 [V89,T73] ( 4, 2 ) ref -> x1 -; V90 tmp82 [V90,T68] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V91 tmp83 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V92 tmp84 [V92 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> -; V93 tmp85 [V93,T76] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V94 tmp86 [V94,T52] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP -; V95 tmp87 [V95,T43] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V96 tmp88 [V96,T50] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V97 tmp89 [V97 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP -; V98 tmp90 [V98 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP -; V99 tmp91 [V99 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP -; V100 tmp92 [V100 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP -;* V101 tmp93 [V101 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP -;* V102 tmp94 [V102 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP -; V103 tmp95 [V103,T46] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP -; V104 tmp96 [V104,T51] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP -;* V105 tmp97 [V105 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP -; V106 tmp98 [V106,T69] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP -; V107 tmp99 [V107,T44] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP -;* V108 tmp100 [V108 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP -;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP -; V110 tmp102 [V110,T70] ( 2, 4 ) ref -> x2 "field V30._value (fldOffset=0x0)" P-INDEP -;* V111 tmp103 [V111 ] ( 0, 0 ) ref -> zero-ref "field V77._value (fldOffset=0x0)" P-INDEP -; V112 tmp104 [V112,T78] ( 3, 1.50) ref -> x0 single-def "field V92._dictionary (fldOffset=0x0)" P-INDEP -;* V113 tmp105 [V113,T82] ( 0, 0 ) int -> zero-ref single-def "field V92._index (fldOffset=0x8)" P-INDEP -; V114 tmp106 [V114,T80] ( 2, 1 ) int -> x1 single-def "field V92._version (fldOffset=0xc)" P-INDEP -;* V115 tmp107 [V115,T83] ( 0, 0 ) short -> zero-ref single-def "field V92._currentKey (fldOffset=0x10)" P-INDEP -; V116 PSPSym [V116,T81] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" -; V117 cse0 [V117,T57] ( 3, 6 ) ref -> x0 "CSE - moderate" -; V118 cse1 [V118,T58] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V119 cse2 [V119,T59] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V120 cse3 [V120,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V121 cse4 [V121,T79] ( 3, 1.50) ref -> x22 "CSE - conservative" -; V122 cse5 [V122,T17] ( 8, 12 ) long -> x22 multi-def "CSE - moderate"
+; V77 tmp69 [V77,T78] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V78 tmp70 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V79 tmp71 [V79,T66] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V80 tmp72 [V80,T75] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V81 tmp73 [V81,T73] ( 4, 2 ) ref -> x1 +; V82 tmp74 [V82,T67] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V83 tmp75 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V84 tmp76 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V85 tmp77 [V85,T68] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> +; V86 tmp78 [V86,T76] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V87 tmp79 [V87,T74] ( 4, 2 ) ref -> x1 +; V88 tmp80 [V88,T69] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V89 tmp81 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V90 tmp82 [V90 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> +; V91 tmp83 [V91,T77] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V92 tmp84 [V92,T53] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP +; V93 tmp85 [V93,T44] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V94 tmp86 [V94,T51] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V95 tmp87 [V95 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP +; V96 tmp88 [V96 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP +; V97 tmp89 [V97 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP +; V98 tmp90 [V98 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP +;* V99 tmp91 [V99 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP +;* V100 tmp92 [V100 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP +; V101 tmp93 [V101,T47] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP +; V102 tmp94 [V102,T52] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP +;* V103 tmp95 [V103 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP +; V104 tmp96 [V104,T70] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP +; V105 tmp97 [V105,T45] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP +;* V106 tmp98 [V106 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP +;* V107 tmp99 [V107 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP +; V108 tmp100 [V108,T71] ( 2, 4 ) ref -> x2 "field V28._value (fldOffset=0x0)" P-INDEP +;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref "field V75._value (fldOffset=0x0)" P-INDEP +; V110 tmp102 [V110,T79] ( 3, 1.50) ref -> x0 single-def "field V90._dictionary (fldOffset=0x0)" P-INDEP +;* V111 tmp103 [V111,T83] ( 0, 0 ) int -> zero-ref single-def "field V90._index (fldOffset=0x8)" P-INDEP +; V112 tmp104 [V112,T81] ( 2, 1 ) int -> x1 single-def "field V90._version (fldOffset=0xc)" P-INDEP +;* V113 tmp105 [V113,T84] ( 0, 0 ) short -> zero-ref single-def "field V90._currentKey (fldOffset=0x10)" P-INDEP +; V114 PSPSym [V114,T82] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" +; V115 cse0 [V115,T58] ( 3, 6 ) ref -> x0 "CSE - moderate" +; V116 cse1 [V116,T59] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V117 cse2 [V117,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V118 cse3 [V118,T61] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V119 cse4 [V119,T80] ( 3, 1.50) ref -> x22 "CSE - conservative" +; V120 cse5 [V120,T18] ( 8, 12 ) long -> x22 multi-def "CSE - moderate" +; V121 rat0 [V121,T15] ( 5, 15 ) ref -> x27 "replacement local"
; ; Lcl frame size = 128 @@ -145,7 +144,7 @@ G_M58756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [fp, #0x70] // [V06 loc3], [V06 loc3+0x08] str xzr, [fp, #0x80] // [V06 loc3+0x10] add x3, sp, #224
- str x3, [fp, #0x88] // [V116 PSPSym]
+ str x3, [fp, #0x88] // [V114 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 @@ -167,13 +166,13 @@ G_M58756_IG02: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, str x0, [fp, #0x58] // [V04 loc1] ; GC ptr vars +{V04} ;; size=36 bbWeight=1 PerfScore 8.00
-G_M58756_IG03: ; bbWeight=1, gcVars=00000000000000000000001000000000 {V04}, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58756_IG03: ; bbWeight=1, gcVars=00000000000000000000002000000000 {V04}, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
add x11, x22, #8 ldr x1, [x11] ...

+36 (+0.81%) : 12441.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)

@@ -9,29 +9,29 @@ ; Final local variable assignments ; ; V00 this [V00,T31] ( 21, 25.50) ref -> x19 this class-hnd single-def <Microsoft.ML.Data.TextLoader+Bindings>
-; V01 arg1 [V01,T73] ( 8, 6.50) ref -> x21 class-hnd single-def <Microsoft.ML.Data.TextLoader> -; V02 arg2 [V02,T52] ( 6, 11.50) ref -> x20 class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]> -; V03 arg3 [V03,T84] ( 6, 4.50) ref -> x22 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V04 arg4 [V04,T91] ( 4, 3 ) ref -> x23 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V05 loc0 [V05,T97] ( 16, 3.50) ref -> [fp+0x58] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
+; V01 arg1 [V01,T74] ( 8, 6.50) ref -> x21 class-hnd single-def <Microsoft.ML.Data.TextLoader> +; V02 arg2 [V02,T53] ( 6, 11.50) ref -> x20 class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]> +; V03 arg3 [V03,T85] ( 6, 4.50) ref -> x22 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V04 arg4 [V04,T93] ( 4, 3 ) ref -> x23 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V05 loc0 [V05,T98] ( 16, 3.50) ref -> [fp+0x58] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
; V06 loc1 [V06,T36] ( 8, 20.50) ref -> x24 class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V07 loc2 [V07,T72] ( 5, 9 ) ubyte -> x25
+; V07 loc2 [V07,T73] ( 5, 9 ) ubyte -> x25
; V08 loc3 [V08,T42] ( 7, 18.50) int -> x26 ; V09 loc4 [V09 ] ( 8, 4.50) ref -> [fp+0xE0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> ; V10 loc5 [V10,T30] ( 10, 28 ) int -> x23
-; V11 loc6 [V11,T71] ( 3, 9.50) ref -> registers class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
+; V11 loc6 [V11,T72] ( 3, 9.50) ref -> registers class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
; V12 loc7 [V12,T35] ( 10, 22.50) ref -> registers class-hnd <Microsoft.ML.Data.TextLoader+Segment[]> ; V13 loc8 [V13,T51] ( 5, 15 ) ref -> [fp+0x50] class-hnd exact spill-single-def <<unknown class>>
-;* V14 loc9 [V14,T119] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
+;* V14 loc9 [V14,T121] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
; V15 loc10 [V15,T44] ( 5, 17 ) int -> x26
-; V16 loc11 [V16,T70] ( 3, 10 ) ref -> x0 class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
+; V16 loc11 [V16,T71] ( 3, 10 ) ref -> x0 class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
; V17 loc12 [V17 ] ( 4, 2 ) int -> [fp+0xD8] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V18 loc13 [V18 ] ( 4, 2 ) int -> [fp+0xD0] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V19 loc14 [V19,T21] ( 12, 45 ) int -> [fp+0xCC] ; V20 loc15 [V20,T22] ( 10, 44 ) ref -> [fp+0x48] class-hnd exact spill-single-def <Microsoft.ML.Data.TextLoader+Column>
-; V21 loc16 [V21,T61] ( 4, 12 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String> -; V22 loc17 [V22,T54] ( 4, 14 ) ref -> [fp+0x38] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> -; V23 loc18 [V23,T89] ( 3, 6 ) ubyte -> [fp+0xC8] spill-single-def
+; V21 loc16 [V21,T62] ( 4, 12 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String> +; V22 loc17 [V22,T55] ( 4, 14 ) ref -> [fp+0x38] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> +; V23 loc18 [V23,T91] ( 3, 6 ) ubyte -> [fp+0xC8] spill-single-def
; V24 loc19 [V24,T23] ( 5, 34 ) ref -> x2 class-hnd exact <Microsoft.ML.Data.TextLoader+Segment[]> ; V25 loc20 [V25,T04] ( 8,108 ) int -> x0 ; V26 loc21 [V26,T00] ( 9,160 ) ref -> x4 class-hnd exact <<unknown class>> @@ -45,55 +45,55 @@ ;* V34 loc29 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]> ; V35 loc30 [V35,T43] ( 6, 18.50) int -> [fp+0xBC] ; V36 loc31 [V36,T20] ( 8, 60 ) int -> [fp+0xB8]
-;* V37 loc32 [V37,T113] ( 0, 0 ) int -> zero-ref
+;* V37 loc32 [V37,T114] ( 0, 0 ) int -> zero-ref
;* V38 loc33 [V38 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> ;* V39 loc34 [V39 ] ( 0, 0 ) struct (16) zero-ref <Microsoft.ML.Data.TextLoader+Segment> ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V42 tmp2 [V42,T78] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <<unknown class>> -; V43 tmp3 [V43,T79] ( 2, 8 ) ref -> x28 class-hnd exact "impSpillLclRefs" <<unknown class>>
+; V42 tmp2 [V42,T79] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <<unknown class>> +; V43 tmp3 [V43,T80] ( 2, 8 ) ref -> x28 class-hnd exact "impSpillLclRefs" <<unknown class>>
;* V44 tmp4 [V44 ] ( 0, 0 ) ref -> zero-ref
-; V45 tmp5 [V45,T74] ( 4, 8 ) ref -> x2
+; V45 tmp5 [V45,T75] ( 4, 8 ) ref -> x2
; V46 tmp6 [V46,T38] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V47 tmp7 [V47,T85] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V48 tmp8 [V48,T90] ( 3, 6 ) int -> x0 -; V49 tmp9 [V49,T62] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
+; V47 tmp7 [V47,T86] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V48 tmp8 [V48,T92] ( 3, 6 ) int -> x0 +; V49 tmp9 [V49,T63] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
;* V50 tmp10 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impImportAndPushBox" <<unknown class>> ;* V51 tmp11 [V51 ] ( 0, 0 ) ref -> zero-ref ;* V52 tmp12 [V52 ] ( 0, 0 ) ref -> zero-ref ; V53 tmp13 [V53,T47] ( 2, 16 ) int -> x6
-; V54 tmp14 [V54,T122] ( 4, 0 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> -; V55 tmp15 [V55,T123] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32> -; V56 tmp16 [V56,T124] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32>
+; V54 tmp14 [V54,T124] ( 4, 0 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> +; V55 tmp15 [V55,T125] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32> +; V56 tmp16 [V56,T126] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32>
;* V57 tmp17 [V57 ] ( 0, 0 ) ref -> zero-ref ;* V58 tmp18 [V58 ] ( 0, 0 ) ref -> zero-ref ; V59 tmp19 [V59,T48] ( 2, 16 ) int -> x7
-; V60 tmp20 [V60,T63] ( 3, 12 ) ref -> [fp+0x20] class-hnd exact spill-single-def "non-inline candidate call" <<unknown class>> -; V61 tmp21 [V61,T80] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V60 tmp20 [V60,T64] ( 3, 12 ) ref -> [fp+0x20] class-hnd exact spill-single-def "non-inline candidate call" <<unknown class>> +; V61 tmp21 [V61,T81] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V62 tmp22 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V63 tmp23 [V63,T98] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V64 tmp24 [V64,T81] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
+; V63 tmp23 [V63,T99] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V64 tmp24 [V64,T82] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
;* V65 tmp25 [V65 ] ( 0, 0 ) ref -> zero-ref ;* V66 tmp26 [V66 ] ( 0, 0 ) ref -> zero-ref
-; V67 tmp27 [V67,T69] ( 5, 10 ) ref -> [fp+0x18]
+; V67 tmp27 [V67,T70] ( 5, 10 ) ref -> [fp+0x18]
; V68 tmp28 [V68,T39] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
-; V69 tmp29 [V69,T99] ( 3, 3 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V70 tmp30 [V70,T82] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
+; V69 tmp29 [V69,T100] ( 3, 3 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V70 tmp30 [V70,T83] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
;* V71 tmp31 [V71 ] ( 0, 0 ) ref -> zero-ref
-; V72 tmp32 [V72,T75] ( 4, 8 ) ref -> x2
+; V72 tmp32 [V72,T76] ( 4, 8 ) ref -> x2
; V73 tmp33 [V73 ] ( 6, 24 ) struct (16) [fp+0xA8] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V74 tmp34 [V74 ] ( 6, 96 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V75 tmp35 [V75,T40] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
-; V76 tmp36 [V76,T100] ( 3, 3 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V76 tmp36 [V76,T101] ( 3, 3 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V77 tmp37 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V78 tmp38 [V78,T108] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> -; V79 tmp39 [V79,T92] ( 2, 4 ) int -> x1 "Inline return value spill temp"
+; V78 tmp38 [V78,T109] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> +; V79 tmp39 [V79,T94] ( 2, 4 ) int -> x1 "Inline return value spill temp"
; V80 tmp40 [V80,T41] ( 3, 20 ) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
-; V81 tmp41 [V81,T64] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> -; V82 tmp42 [V82,T115] ( 2, 1 ) int -> x2 "Inline return value spill temp" -; V83 tmp43 [V83,T101] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V84 tmp44 [V84,T118] ( 2, 1 ) int -> x26 "Inline return value spill temp" -; V85 tmp45 [V85,T105] ( 3, 3 ) int -> x1 "Inlining Arg"
+; V81 tmp41 [V81,T65] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> +; V82 tmp42 [V82,T117] ( 2, 1 ) int -> x2 "Inline return value spill temp" +; V83 tmp43 [V83,T102] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> +; V84 tmp44 [V84,T120] ( 2, 1 ) int -> x26 "Inline return value spill temp" +; V85 tmp45 [V85,T106] ( 3, 3 ) int -> x1 "Inlining Arg"
;* V86 tmp46 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V87 tmp47 [V87,T49] ( 2, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V88 tmp48 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -109,107 +109,107 @@ ;* V98 tmp58 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V99 tmp59 [V99,T28] ( 2, 32 ) ubyte -> x7 "Inlining Arg" ;* V100 tmp60 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V101 tmp61 [V101,T86] ( 3, 6 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> -;* V102 tmp62 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V103 tmp63 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.ML.Data.TextLoader+Segment[]> -; V104 tmp64 [V104,T93] ( 2, 4 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V105 tmp65 [V105,T32] ( 6, 24 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> -; V106 tmp66 [V106,T87] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V107 tmp67 [V107,T76] ( 4, 8 ) int -> x2 "Inline stloc first use temp" -; V108 tmp68 [V108 ] ( 6, 24 ) struct (16) [fp+0x88] do-not-enreg[SFA] multireg-arg "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -; V109 tmp69 [V109,T65] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> -;* V110 tmp70 [V110 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> -;* V111 tmp71 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V112 tmp72 [V112,T33] ( 3, 24 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V113 tmp73 [V113,T26] ( 4, 32 ) int -> x2 "Inline stloc first use temp" -;* V114 tmp74 [V114 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V115 tmp75 [V115,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V116 tmp76 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V117 tmp77 [V117,T88] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V118 tmp78 [V118,T77] ( 4, 8 ) int -> x2 "Inline stloc first use temp" -;* V119 tmp79 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V120 tmp80 [V120 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V121 tmp81 [V121,T116] ( 2, 1 ) int -> x14 "Inline return value spill temp" -; V122 tmp82 [V122,T102] ( 3, 3 ) ref -> x13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V123 tmp83 [V123,T109] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -;* V124 tmp84 [V124 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V125 tmp85 [V125,T03] ( 6,112 ) int -> x5 "field V28.Min (fldOffset=0x0)" P-INDEP -; V126 tmp86 [V126,T05] ( 5,104 ) int -> x6 "field V28.Lim (fldOffset=0x4)" P-INDEP -; V127 tmp87 [V127,T12] ( 4, 64 ) ubyte -> x7 "field V28.ForceVector (fldOffset=0x8)" P-INDEP -; V128 tmp88 [V128,T107] ( 2, 2.50) int -> [fp+0x84] spill-single-def "field V32.Min (fldOffset=0x0)" P-INDEP -; V129 tmp89 [V129,T53] ( 4, 26.50) int -> [fp+0x80] spill-single-def "field V32.Lim (fldOffset=0x4)" P-INDEP -;* V130 tmp90 [V130 ] ( 0, 0 ) ubyte -> zero-ref "field V32.ForceVector (fldOffset=0x8)" P-INDEP -;* V131 tmp91 [V131 ] ( 0, 0 ) int -> zero-ref "field V39.Min (fldOffset=0x0)" P-INDEP -;* V132 tmp92 [V132 ] ( 0, 0 ) int -> zero-ref "field V39.Lim (fldOffset=0x4)" P-INDEP -;* V133 tmp93 [V133 ] ( 0, 0 ) ubyte -> zero-ref "field V39.ForceVector (fldOffset=0x8)" P-INDEP -;* V134 tmp94 [V134,T114] ( 0, 0 ) ubyte -> zero-ref "field V62.hasValue (fldOffset=0x0)" P-INDEP -; V135 tmp95 [V135,T94] ( 2, 4 ) ubyte -> x0 "field V62.value (fldOffset=0x1)" P-INDEP -; V136 tmp96 [V136,T55] ( 4, 14 ) int -> [fp+0xA8] do-not-enreg[] "field V73.Min (fldOffset=0x0)" P-DEP -; V137 tmp97 [V137,T56] ( 4, 14 ) int -> [fp+0xAC] do-not-enreg[] "field V73.Lim (fldOffset=0x4)" P-DEP -; V138 tmp98 [V138,T57] ( 4, 14 ) ubyte -> [fp+0xB0] do-not-enreg[] "field V73.ForceVector (fldOffset=0x8)" P-DEP -; V139 tmp99 [V139,T13] ( 4, 56 ) int -> [fp+0x98] do-not-enreg[] "field V74.Min (fldOffset=0x0)" P-DEP -; V140 tmp100 [V140,T14] ( 4, 56 ) int -> [fp+0x9C] do-not-enreg[] "field V74.Lim (fldOffset=0x4)" P-DEP -; V141 tmp101 [V141,T15] ( 4, 56 ) ubyte -> [fp+0xA0] do-not-enreg[] "field V74.ForceVector (fldOffset=0x8)" P-DEP -; V142 tmp102 [V142,T58] ( 4, 14 ) int -> [fp+0x88] do-not-enreg[] "field V108.Min (fldOffset=0x0)" P-DEP -; V143 tmp103 [V143,T59] ( 4, 14 ) int -> [fp+0x8C] do-not-enreg[] "field V108.Lim (fldOffset=0x4)" P-DEP -; V144 tmp104 [V144,T60] ( 4, 14 ) ubyte -> [fp+0x90] do-not-enreg[] "field V108.ForceVector (fldOffset=0x8)" P-DEP -;* V145 tmp105 [V145 ] ( 0, 0 ) int -> zero-ref "field V114.Min (fldOffset=0x0)" P-INDEP -;* V146 tmp106 [V146 ] ( 0, 0 ) int -> zero-ref "field V114.Lim (fldOffset=0x4)" P-INDEP -;* V147 tmp107 [V147 ] ( 0, 0 ) ubyte -> zero-ref "field V114.ForceVector (fldOffset=0x8)" P-INDEP -;* V148 tmp108 [V148 ] ( 0, 0 ) int -> zero-ref "field V119.Min (fldOffset=0x0)" P-INDEP -;* V149 tmp109 [V149 ] ( 0, 0 ) int -> zero-ref "field V119.Lim (fldOffset=0x4)" P-INDEP -;* V150 tmp110 [V150 ] ( 0, 0 ) ubyte -> zero-ref "field V119.ForceVector (fldOffset=0x8)" P-INDEP -;* V151 tmp111 [V151,T112] ( 0, 0 ) ref -> zero-ref "V38.[000..008)" -; V152 tmp112 [V152,T06] ( 6, 82 ) int -> [fp+0x7C] "V38.[008..012)" -; V153 tmp113 [V153,T24] ( 3, 34 ) int -> [fp+0x78] spill-single-def "V38.[012..016)" -; V154 tmp114 [V154,T16] ( 3, 32 ) int -> x2 "V38.[016..020)" -; V155 tmp115 [V155,T17] ( 3, 32 ) int -> [fp+0x74] spill-single-def "V38.[020..024)" -;* V156 tmp116 [V156 ] ( 0, 0 ) ubyte -> zero-ref "V38.[024..025)" -;* V157 tmp117 [V157 ] ( 0, 0 ) ref -> zero-ref "V110.[000..008)" -;* V158 tmp118 [V158 ] ( 0, 0 ) int -> zero-ref "V110.[008..012)" -; V159 tmp119 [V159,T95] ( 2, 4 ) int -> x5 "V110.[012..016)" -;* V160 tmp120 [V160 ] ( 0, 0 ) int -> zero-ref "V110.[016..020)" -;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref "V110.[020..024)" -;* V162 tmp122 [V162 ] ( 0, 0 ) ubyte -> zero-ref "V110.[024..025)" -; V163 tmp123 [V163,T07] ( 3, 96 ) byref -> x1 "Spilling address for field-by-field copy" -; V164 tmp124 [V164,T125] ( 2, 0 ) ref -> x19 "argument with side effect" -; V165 tmp125 [V165,T126] ( 2, 0 ) ref -> x2 "argument with side effect" -; V166 tmp126 [V166,T127] ( 2, 0 ) ref -> x19 "argument with side effect" -; V167 tmp127 [V167,T128] ( 2, 0 ) ref -> x2 "argument with side effect" -; V168 tmp128 [V168,T67] ( 3, 12 ) struct ( 8) [fp+0x68] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V169 tmp129 [V169,T08] ( 3, 96 ) ref -> x4 "arr expr" -; V170 tmp130 [V170,T129] ( 2, 0 ) ref -> x20 "argument with side effect" -; V171 tmp131 [V171,T130] ( 2, 0 ) ref -> x2 "argument with side effect" -; V172 tmp132 [V172,T02] ( 4,128 ) byref -> x4 "BlockOp address local" -; V173 tmp133 [V173,T131] ( 2, 0 ) ref -> x1 "argument with side effect" -; V174 tmp134 [V174,T132] ( 2, 0 ) ref -> x1 "argument with side effect" -; V175 tmp135 [V175,T133] ( 2, 0 ) ref -> x19 "argument with side effect" -; V176 tmp136 [V176,T134] ( 2, 0 ) ref -> x2 "argument with side effect" -; V177 tmp137 [V177,T135] ( 2, 0 ) ref -> x1 "argument with side effect" -; V178 tmp138 [V178,T66] ( 3, 12 ) ref -> x0 "arr expr" -; V179 tmp139 [V179,T83] ( 2, 8 ) ref -> x0 "argument with side effect" -; V180 tmp140 [V180,T106] ( 3, 3 ) int -> x1 "index expr" -; V181 tmp141 [V181,T103] ( 3, 3 ) byref -> x1 single-def "BlockOp address local" -; V182 tmp142 [V182,T09] ( 3, 96 ) ref -> x1 "arr expr" -; V183 tmp143 [V183,T46] ( 4, 16 ) byref -> x1 "BlockOp address local" -; V184 tmp144 [V184,T110] ( 2, 2 ) ref -> x20 single-def "argument with side effect" -; V185 tmp145 [V185,T111] ( 2, 2 ) ref -> x2 single-def "argument with side effect" -; V186 tmp146 [V186,T104] ( 3, 3 ) ref -> x13 single-def "arr expr" -; V187 tmp147 [V187,T136] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V188 tmp148 [V188,T137] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V189 tmp149 [V189,T138] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V190 tmp150 [V190,T139] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V191 tmp151 [V191,T140] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V192 tmp152 [V192,T141] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V193 PSPSym [V193,T120] ( 1, 1 ) long -> [fp+0xE8] do-not-enreg[V] "PSPSym" -;* V194 cse0 [V194,T96] ( 0, 0 ) long -> zero-ref multi-def "CSE - moderate" -;* V195 cse1 [V195,T121] ( 0, 0 ) long -> zero-ref "CSE - conservative" -; V196 cse2 [V196,T19] ( 3, 48 ) int -> x7 "CSE - moderate" -; V197 cse3 [V197,T117] ( 3, 1.50) int -> x13 "CSE - conservative" -; V198 cse4 [V198,T34] ( 3, 24 ) int -> x1 "CSE - moderate" -; V199 cse5 [V199,T68] ( 6, 11.50) int -> x27 "CSE - moderate" -; V200 cse6 [V200,T45] ( 8, 16 ) long -> [fp+0x60] multi-def "CSE - moderate" -; V201 cse7 [V201,T50] ( 2, 16 ) int -> x0 "CSE - moderate"
+; V101 tmp61 [V101,T87] ( 3, 6 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> +;* V102 tmp62 [V102,T115] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V103 tmp63 [V103,T88] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V104 tmp64 [V104,T32] ( 6, 24 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> +; V105 tmp65 [V105,T89] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V106 tmp66 [V106,T77] ( 4, 8 ) int -> x2 "Inline stloc first use temp" +; V107 tmp67 [V107 ] ( 6, 24 ) struct (16) [fp+0x88] do-not-enreg[SFA] multireg-arg "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +; V108 tmp68 [V108,T66] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> +;* V109 tmp69 [V109 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> +;* V110 tmp70 [V110 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V111 tmp71 [V111,T33] ( 3, 24 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V112 tmp72 [V112,T26] ( 4, 32 ) int -> x2 "Inline stloc first use temp" +;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V114 tmp74 [V114,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V115 tmp75 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V116 tmp76 [V116,T90] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V117 tmp77 [V117,T78] ( 4, 8 ) int -> x2 "Inline stloc first use temp" +;* V118 tmp78 [V118 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V119 tmp79 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V120 tmp80 [V120,T118] ( 2, 1 ) int -> x14 "Inline return value spill temp" +; V121 tmp81 [V121,T103] ( 3, 3 ) ref -> x13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]>
...

+16 (+4.35%) : 4741.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.osx.arm64.checked.mch 111 86 20 5 -1,964 +1,400
benchmarks.run_pgo.osx.arm64.checked.mch 905 286 618 1 -7,336 +24,600
benchmarks.run_tiered.osx.arm64.checked.mch 25 18 7 0 -512 +208
coreclr_tests.run.osx.arm64.checked.mch 420 202 195 23 -5,068 +179,916
libraries.crossgen2.osx.arm64.checked.mch 1,105 1,095 3 7 -38,612 +12
libraries.pmi.osx.arm64.checked.mch 667 608 39 20 -19,860 +2,276
libraries_tests.run.osx.arm64.Release.mch 2,588 1,148 1,396 44 -26,452 +49,360
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 879 725 128 26 -25,020 +11,064
realworld.run.osx.arm64.checked.mch 124 113 5 6 -3,404 +116
6,824 4,281 2,411 132 -128,228 +268,952

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 23,181 4 23,177 0 (0.00%) 1,679 (6.75%)
benchmarks.run_pgo.osx.arm64.checked.mch 82,027 48,088 33,939 0 (0.00%) 1,790 (2.14%)
benchmarks.run_tiered.osx.arm64.checked.mch 47,701 37,350 10,351 0 (0.00%) 423 (0.88%)
coreclr_tests.run.osx.arm64.checked.mch 577,328 356,765 220,563 2 (0.00%) 8,560 (1.46%)
libraries.crossgen2.osx.arm64.checked.mch 234,098 15 234,083 0 (0.00%) 7 (0.00%)
libraries.pmi.osx.arm64.checked.mch 287,318 18 287,300 0 (0.00%) 29,030 (9.18%)
libraries_tests.run.osx.arm64.Release.mch 617,240 468,829 148,411 0 (0.00%) 26,645 (4.14%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 261,919 21,597 240,322 0 (0.00%) 40,382 (13.36%)
realworld.run.osx.arm64.checked.mch 27,258 3 27,255 0 (0.00%) 4,284 (13.58%)
2,158,070 932,669 1,225,401 2 (0.00%) 112,800 (4.97%)

jit-analyze output

benchmarks.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: 9448856 (overridden on cmd)
Total bytes of diff: 9448292 (overridden on cmd)
Total bytes of delta: -564 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         136 : 17227.dasm (35.79 % of base)
         136 : 22351.dasm (7.71 % of base)
         120 : 1676.dasm (4.84 % of base)
          80 : 9472.dasm (3.05 % of base)
          68 : 20631.dasm (7.69 % of base)
          68 : 22165.dasm (17.17 % of base)
          68 : 22381.dasm (15.18 % of base)
          68 : 22634.dasm (14.91 % of base)
          68 : 23153.dasm (14.29 % of base)
          68 : 23263.dasm (10.83 % of base)
          68 : 12392.dasm (10.37 % of base)
          68 : 22753.dasm (16.35 % of base)
          68 : 23002.dasm (14.53 % of base)
          68 : 23598.dasm (7.20 % of base)
          68 : 9352.dasm (11.18 % of base)
          64 : 7109.dasm (2.52 % of base)
          64 : 9256.dasm (2.28 % of base)
          40 : 14618.dasm (4.26 % of base)
           8 : 20113.dasm (0.36 % of base)
           4 : 2694.dasm (0.40 % of base)

Top file improvements (bytes):
         -80 : 5490.dasm (-1.73 % of base)
         -72 : 9445.dasm (-2.13 % of base)
         -48 : 9542.dasm (-10.53 % of base)
         -44 : 20968.dasm (-16.18 % of base)
         -44 : 9511.dasm (-4.60 % of base)
         -40 : 17331.dasm (-4.81 % of base)
         -40 : 19737.dasm (-8.06 % of base)
         -40 : 18550.dasm (-12.50 % of base)
         -40 : 2456.dasm (-9.26 % of base)
         -36 : 20831.dasm (-15.00 % of base)
         -28 : 14024.dasm (-2.13 % of base)
         -28 : 3029.dasm (-12.28 % of base)
         -28 : 16476.dasm (-21.88 % of base)
         -28 : 19073.dasm (-15.91 % of base)
         -28 : 2058.dasm (-46.67 % of base)
         -28 : 2224.dasm (-3.59 % of base)
         -28 : 3277.dasm (-25.93 % of base)
         -28 : 420.dasm (-28.00 % of base)
         -28 : 14045.dasm (-6.48 % of base)
         -28 : 10702.dasm (-20.59 % of base)

61 total files with Code Size differences (41 improved, 20 regressed), 5 unchanged.

Top method regressions (bytes):
         136 (7.71 % of base) : 22351.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
         136 (35.79 % of base) : 17227.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
         120 (4.84 % of base) : 1676.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          80 (3.05 % of base) : 9472.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          68 (17.17 % of base) : 22165.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (15.18 % of base) : 22381.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (14.91 % of base) : 22634.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (16.35 % of base) : 22753.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (14.53 % of base) : 23002.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.29 % of base) : 23153.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (7.69 % of base) : 20631.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 23598.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          68 (10.83 % of base) : 23263.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (11.18 % of base) : 9352.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.37 % of base) : 12392.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          64 (2.28 % of base) : 9256.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          64 (2.52 % of base) : 7109.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          40 (4.26 % of base) : 14618.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
           8 (0.36 % of base) : 20113.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.40 % of base) : 2694.dasm - System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (bytes):
         -80 (-1.73 % of base) : 5490.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -72 (-2.13 % of base) : 9445.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)
         -48 (-10.53 % of base) : 9542.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -44 (-16.18 % of base) : 20968.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-4.60 % of base) : 9511.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -40 (-4.81 % of base) : 17331.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) : 18550.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 19737.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-9.26 % of base) : 2456.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
         -36 (-15.00 % of base) : 20831.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 19073.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -28 (-12.28 % of base) : 3029.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
         -28 (-21.88 % of base) : 16476.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-2.13 % of base) : 14024.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
         -28 (-20.59 % of base) : 10702.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 420.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-6.48 % of base) : 14045.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -28 (-25.93 % of base) : 3277.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -28 (-46.67 % of base) : 2058.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-3.59 % of base) : 2224.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)

Top method regressions (percentages):
         136 (35.79 % of base) : 17227.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          68 (17.17 % of base) : 22165.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (16.35 % of base) : 22753.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (15.18 % of base) : 22381.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (14.91 % of base) : 22634.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (14.53 % of base) : 23002.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.29 % of base) : 23153.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (11.18 % of base) : 9352.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.83 % of base) : 23263.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (10.37 % of base) : 12392.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
         136 (7.71 % of base) : 22351.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
          68 (7.69 % of base) : 20631.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 23598.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
         120 (4.84 % of base) : 1676.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          40 (4.26 % of base) : 14618.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          80 (3.05 % of base) : 9472.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          64 (2.52 % of base) : 7109.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          64 (2.28 % of base) : 9256.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
           4 (0.40 % of base) : 2694.dasm - System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)
           8 (0.36 % of base) : 20113.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 2058.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 1480.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 420.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 3277.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -24 (-22.22 % of base) : 16894.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -28 (-21.88 % of base) : 16476.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-20.59 % of base) : 10702.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -20 (-20.00 % of base) : 13571.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -20 (-17.86 % of base) : 17541.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -24 (-16.67 % of base) : 23332.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
         -24 (-16.22 % of base) : 7873.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
         -44 (-16.18 % of base) : 20968.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 5727.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 19073.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -36 (-15.00 % of base) : 20831.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -24 (-14.63 % of base) : 12925.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-14.29 % of base) : 5536.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -24 (-13.33 % of base) : 17115.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (FullOpts)
         -24 (-13.04 % of base) : 13306.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-13.04 % of base) : 9449.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)


benchmarks.run_pgo.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: 32120784 (overridden on cmd)
Total bytes of diff: 32138048 (overridden on cmd)
Total bytes of delta: 17264 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         136 : 68537.dasm (7.93 % of base)
          76 : 39949.dasm (3.34 % of base)
          76 : 44185.dasm (3.34 % of base)
          60 : 26364.dasm (7.58 % of base)
          60 : 34362.dasm (7.43 % of base)
          60 : 38062.dasm (9.55 % of base)
          60 : 41059.dasm (7.43 % of base)
          60 : 43117.dasm (7.43 % of base)
          60 : 46200.dasm (9.55 % of base)
          60 : 60587.dasm (7.58 % of base)
          60 : 68365.dasm (7.43 % of base)
          60 : 75774.dasm (7.43 % of base)
          60 : 75793.dasm (9.55 % of base)
          60 : 17923.dasm (7.58 % of base)
          60 : 79908.dasm (7.43 % of base)
          60 : 72641.dasm (7.58 % of base)
          60 : 74042.dasm (13.16 % of base)
          60 : 81347.dasm (7.43 % of base)
          56 : 33312.dasm (9.40 % of base)
          56 : 36258.dasm (9.40 % of base)

Top file improvements (bytes):
        -396 : 57563.dasm (-8.60 % of base)
         -72 : 58646.dasm (-1.72 % of base)
         -56 : 63164.dasm (-5.32 % of base)
         -48 : 64459.dasm (-14.63 % of base)
         -48 : 64518.dasm (-8.45 % of base)
         -44 : 14784.dasm (-9.57 % of base)
         -44 : 24078.dasm (-9.57 % of base)
         -28 : 30334.dasm (-28.00 % of base)
         -28 : 38967.dasm (-3.30 % of base)
         -28 : 42282.dasm (-3.30 % of base)
         -28 : 43569.dasm (-3.30 % of base)
         -28 : 45788.dasm (-3.27 % of base)
         -28 : 45986.dasm (-3.27 % of base)
         -28 : 58150.dasm (-2.01 % of base)
         -28 : 58385.dasm (-9.46 % of base)
         -28 : 63097.dasm (-5.69 % of base)
         -24 : 16529.dasm (-2.82 % of base)
         -24 : 44997.dasm (-5.22 % of base)
         -24 : 56925.dasm (-17.14 % of base)
         -24 : 58854.dasm (-5.22 % of base)

75 total files with Code Size differences (30 improved, 45 regressed), 1 unchanged.

Top method regressions (bytes):
         136 (7.93 % of base) : 68537.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          76 (3.34 % of base) : 39949.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.34 % of base) : 44185.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          60 (9.55 % of base) : 38062.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 46200.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 75793.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (13.16 % of base) : 74042.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (7.58 % of base) : 26364.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 34362.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 41059.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 43117.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 60587.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 68365.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 75774.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 17923.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 79908.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 72641.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 81347.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          56 (9.40 % of base) : 33312.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 36258.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

Top method improvements (bytes):
        -396 (-8.60 % of base) : 57563.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -72 (-1.72 % of base) : 58646.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -56 (-5.32 % of base) : 63164.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -48 (-14.63 % of base) : 64459.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -48 (-8.45 % of base) : 64518.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.57 % of base) : 14784.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -44 (-9.57 % of base) : 24078.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -28 (-2.01 % of base) : 58150.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax] (Tier1)
         -28 (-9.46 % of base) : 58385.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 30334.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-5.69 % of base) : 63097.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -28 (-3.30 % of base) : 38967.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 42282.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 43569.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.27 % of base) : 45788.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.27 % of base) : 45986.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-13.64 % of base) : 63252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-10.71 % of base) : 63873.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-17.14 % of base) : 56925.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -24 (-5.22 % of base) : 44997.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)

Top method regressions (percentages):
          60 (13.16 % of base) : 74042.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.53 % of base) : 34857.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.53 % of base) : 69402.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.53 % of base) : 80079.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 38062.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 46200.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 75793.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.46 % of base) : 61128.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.46 % of base) : 78809.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.46 % of base) : 80289.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 33312.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 36258.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 42832.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 46167.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 65670.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 68334.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 70086.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 79683.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 72140.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 75139.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 30334.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -24 (-17.14 % of base) : 56925.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -48 (-14.63 % of base) : 64459.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.64 % of base) : 63252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-10.71 % of base) : 63873.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.57 % of base) : 14784.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -44 (-9.57 % of base) : 24078.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -28 (-9.46 % of base) : 58385.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
        -396 (-8.60 % of base) : 57563.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -48 (-8.45 % of base) : 64518.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -20 (-6.10 % of base) : 13660.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -28 (-5.69 % of base) : 63097.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -16 (-5.41 % of base) : 63372.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -56 (-5.32 % of base) : 63164.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -24 (-5.22 % of base) : 44997.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -24 (-5.22 % of base) : 58854.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -24 (-4.62 % of base) : 24077.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -24 (-4.62 % of base) : 14783.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -24 (-4.48 % of base) : 22942.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -16 (-3.54 % of base) : 72643.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):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: 15054540 (overridden on cmd)
Total bytes of diff: 15054236 (overridden on cmd)
Total bytes of delta: -304 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         136 : 44298.dasm (7.93 % of base)
          12 : 30834.dasm (7.32 % of base)
          12 : 46874.dasm (7.32 % of base)
          12 : 28559.dasm (7.32 % of base)
          12 : 46627.dasm (7.32 % of base)
          12 : 24694.dasm (7.32 % of base)
          12 : 47139.dasm (7.32 % of base)

Top file improvements (bytes):
         -52 : 4618.dasm (-12.87 % of base)
         -44 : 42276.dasm (-16.18 % of base)
         -40 : 42382.dasm (-12.50 % of base)
         -36 : 41182.dasm (-15.00 % of base)
         -28 : 41232.dasm (-15.91 % of base)
         -28 : 39123.dasm (-4.27 % of base)
         -28 : 6298.dasm (-25.93 % of base)
         -28 : 39220.dasm (-12.73 % of base)
         -28 : 4800.dasm (-28.00 % of base)
         -24 : 3382.dasm (-4.51 % of base)
         -24 : 41341.dasm (-5.56 % of base)
         -24 : 39897.dasm (-11.11 % of base)
         -24 : 39318.dasm (-17.14 % of base)
         -24 : 41482.dasm (-13.95 % of base)
         -24 : 41978.dasm (-6.45 % of base)
         -20 : 19564.dasm (-6.10 % of base)
         -20 : 4622.dasm (-5.95 % of base)
         -16 : 41385.dasm (-7.84 % of base)

25 total files with Code Size differences (18 improved, 7 regressed), 0 unchanged.

Top method regressions (bytes):
         136 (7.93 % of base) : 44298.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 46874.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 47139.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
          12 (7.32 % of base) : 24694.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 28559.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
          12 (7.32 % of base) : 30834.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
          12 (7.32 % of base) : 46627.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (bytes):
         -52 (-12.87 % of base) : 4618.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -44 (-16.18 % of base) : 42276.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -40 (-12.50 % of base) : 42382.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -36 (-15.00 % of base) : 41182.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-4.27 % of base) : 39123.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) : 39220.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 41232.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 4800.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-25.93 % of base) : 6298.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 41482.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 39318.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -24 (-11.11 % of base) : 39897.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -24 (-6.45 % of base) : 41978.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-5.56 % of base) : 41341.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-4.51 % of base) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-6.10 % of base) : 19564.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -20 (-5.95 % of base) : 4622.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
         -16 (-7.84 % of base) : 41385.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)

Top method regressions (percentages):
         136 (7.93 % of base) : 44298.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 46874.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 47139.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
          12 (7.32 % of base) : 24694.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 28559.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
          12 (7.32 % of base) : 30834.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
          12 (7.32 % of base) : 46627.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 4800.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-25.93 % of base) : 6298.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-17.14 % of base) : 39318.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -44 (-16.18 % of base) : 42276.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 41232.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -36 (-15.00 % of base) : 41182.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 41482.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -52 (-12.87 % of base) : 4618.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -28 (-12.73 % of base) : 39220.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -40 (-12.50 % of base) : 42382.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-11.11 % of base) : 39897.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -16 (-7.84 % of base) : 41385.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -24 (-6.45 % of base) : 41978.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -20 (-6.10 % of base) : 19564.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -20 (-5.95 % of base) : 4622.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
         -24 (-5.56 % of base) : 41341.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-4.51 % of base) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-4.27 % of base) : 39123.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)

25 total methods with Code Size differences (18 improved, 7 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: 456513504 (overridden on cmd)
Total bytes of diff: 456688352 (overridden on cmd)
Total bytes of delta: 174848 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        8312 : 567959.dasm (38.73 % of base)
        8032 : 567334.dasm (39.29 % of base)
        8020 : 566029.dasm (36.95 % of base)
        8020 : 566933.dasm (38.23 % of base)
        8000 : 566269.dasm (36.23 % of base)
        7540 : 567303.dasm (34.38 % of base)
        7420 : 566236.dasm (35.37 % of base)
        7312 : 567563.dasm (34.34 % of base)
        7224 : 567409.dasm (32.19 % of base)
        7076 : 567601.dasm (30.24 % of base)
        6988 : 566204.dasm (31.14 % of base)
        6980 : 568154.dasm (30.87 % of base)
        6844 : 568031.dasm (28.14 % of base)
        6832 : 566901.dasm (29.83 % of base)
        6804 : 568122.dasm (29.00 % of base)
        6792 : 566303.dasm (28.66 % of base)
        6784 : 566172.dasm (28.86 % of base)
        6648 : 566138.dasm (29.69 % of base)
        6612 : 567791.dasm (26.56 % of base)
        6608 : 566105.dasm (27.78 % of base)

Top file improvements (bytes):
        -612 : 379106.dasm (-10.21 % of base)
         -80 : 387718.dasm (-5.81 % of base)
         -64 : 518181.dasm (-26.23 % of base)
         -64 : 524232.dasm (-38.10 % of base)
         -56 : 260353.dasm (-19.44 % of base)
         -52 : 387716.dasm (-4.30 % of base)
         -52 : 387968.dasm (-4.22 % of base)
         -52 : 491922.dasm (-5.06 % of base)
         -48 : 478448.dasm (-21.82 % of base)
         -48 : 491948.dasm (-10.53 % of base)
         -44 : 479997.dasm (-23.40 % of base)
         -44 : 479998.dasm (-13.41 % of base)
         -44 : 480009.dasm (-23.40 % of base)
         -44 : 480011.dasm (-13.41 % of base)
         -44 : 490937.dasm (-16.18 % of base)
         -40 : 487412.dasm (-4.81 % of base)
         -40 : 488878.dasm (-12.50 % of base)
         -40 : 490094.dasm (-8.06 % of base)
         -36 : 490789.dasm (-15.00 % of base)
         -32 : 374573.dasm (-4.52 % of base)

70 total files with Code Size differences (43 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
        8312 (38.73 % of base) : 567959.dasm - Generated957:CalliTest() (FullOpts)
        8032 (39.29 % of base) : 567334.dasm - Generated938:CalliTest() (FullOpts)
        8020 (36.95 % of base) : 566029.dasm - Generated900:CalliTest() (FullOpts)
        8020 (38.23 % of base) : 566933.dasm - Generated926:CalliTest() (FullOpts)
        8000 (36.23 % of base) : 566269.dasm - Generated907:CalliTest() (FullOpts)
        7540 (34.38 % of base) : 567303.dasm - Generated937:CalliTest() (FullOpts)
        7420 (35.37 % of base) : 566236.dasm - Generated906:CalliTest() (FullOpts)
        7312 (34.34 % of base) : 567563.dasm - Generated945:CalliTest() (FullOpts)
        7224 (32.19 % of base) : 567409.dasm - Generated940:CalliTest() (FullOpts)
        7076 (30.24 % of base) : 567601.dasm - Generated946:CalliTest() (FullOpts)
        6988 (31.14 % of base) : 566204.dasm - Generated905:CalliTest() (FullOpts)
        6980 (30.87 % of base) : 568154.dasm - Generated963:CalliTest() (FullOpts)
        6844 (28.14 % of base) : 568031.dasm - Generated959:CalliTest() (FullOpts)
        6832 (29.83 % of base) : 566901.dasm - Generated925:CalliTest() (FullOpts)
        6804 (29.00 % of base) : 568122.dasm - Generated962:CalliTest() (FullOpts)
        6792 (28.66 % of base) : 566303.dasm - Generated908:CalliTest() (FullOpts)
        6784 (28.86 % of base) : 566172.dasm - Generated904:CalliTest() (FullOpts)
        6648 (29.69 % of base) : 566138.dasm - Generated903:CalliTest() (FullOpts)
        6612 (26.56 % of base) : 567791.dasm - Generated952:CalliTest() (FullOpts)
        6608 (27.78 % of base) : 566105.dasm - Generated902:CalliTest() (FullOpts)

Top method improvements (bytes):
        -612 (-10.21 % of base) : 379106.dasm - ILCompiler.NativeAotNameMangler:ComputeUnqualifiedMangledMethodName(Internal.TypeSystem.MethodDesc):Internal.Text.Utf8String:this (Tier1)
         -80 (-5.81 % of base) : 387718.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
         -64 (-26.23 % of base) : 518181.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -64 (-38.10 % of base) : 524232.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -56 (-19.44 % of base) : 260353.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -52 (-4.30 % of base) : 387716.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-4.22 % of base) : 387968.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-5.06 % of base) : 491922.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -48 (-10.53 % of base) : 491948.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -48 (-21.82 % of base) : 478448.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -44 (-16.18 % of base) : 490937.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-23.40 % of base) : 480009.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 480011.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -44 (-23.40 % of base) : 479997.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 479998.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -40 (-4.81 % of base) : 487412.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) : 488878.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 490094.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -36 (-15.00 % of base) : 490789.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -32 (-4.52 % of base) : 374573.dasm - Internal.TypeSystem.InstantiatedType:InstantiateTypeArray[System.__Canon](System.__Canon[],Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):System.__Canon[] (Tier1)

Top method regressions (percentages):
          60 (300.00 % of base) : 485762.dasm - T:TestEntryPoint():int (FullOpts)
        8032 (39.29 % of base) : 567334.dasm - Generated938:CalliTest() (FullOpts)
        8312 (38.73 % of base) : 567959.dasm - Generated957:CalliTest() (FullOpts)
        8020 (38.23 % of base) : 566933.dasm - Generated926:CalliTest() (FullOpts)
        8020 (36.95 % of base) : 566029.dasm - Generated900:CalliTest() (FullOpts)
         280 (36.84 % of base) : 344706.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
        8000 (36.23 % of base) : 566269.dasm - Generated907:CalliTest() (FullOpts)
         136 (35.79 % of base) : 476806.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.Common.VtblPtr](long):ComWrappersTests.Common.VtblPtr (FullOpts)
        7420 (35.37 % of base) : 566236.dasm - Generated906:CalliTest() (FullOpts)
        7540 (34.38 % of base) : 567303.dasm - Generated937:CalliTest() (FullOpts)
        7312 (34.34 % of base) : 567563.dasm - Generated945:CalliTest() (FullOpts)
        7224 (32.19 % of base) : 567409.dasm - Generated940:CalliTest() (FullOpts)
        6988 (31.14 % of base) : 566204.dasm - Generated905:CalliTest() (FullOpts)
        6980 (30.87 % of base) : 568154.dasm - Generated963:CalliTest() (FullOpts)
        7076 (30.24 % of base) : 567601.dasm - Generated946:CalliTest() (FullOpts)
        6832 (29.83 % of base) : 566901.dasm - Generated925:CalliTest() (FullOpts)
        6648 (29.69 % of base) : 566138.dasm - Generated903:CalliTest() (FullOpts)
        6584 (29.28 % of base) : 567365.dasm - Generated939:CalliTest() (FullOpts)
        6804 (29.00 % of base) : 568122.dasm - Generated962:CalliTest() (FullOpts)
        6784 (28.86 % of base) : 566172.dasm - Generated904:CalliTest() (FullOpts)

Top method improvements (percentages):
         -24 (-40.00 % of base) : 249536.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
         -64 (-38.10 % of base) : 524232.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -24 (-28.57 % of base) : 582539.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 581569.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 1989.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -64 (-26.23 % of base) : 518181.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -44 (-23.40 % of base) : 480009.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-23.40 % of base) : 479997.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -48 (-21.82 % of base) : 478448.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -28 (-21.21 % of base) : 582688.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -24 (-20.00 % of base) : 570534.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
         -20 (-20.00 % of base) : 529429.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
         -28 (-20.00 % of base) : 370158.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -20 (-20.00 % of base) : 260260.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -56 (-19.44 % of base) : 260353.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -28 (-18.92 % of base) : 506837.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -28 (-18.92 % of base) : 299664.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -20 (-17.86 % of base) : 487623.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -32 (-17.78 % of base) : 260306.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -28 (-17.50 % of base) : 249530.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)


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: 55720964 (overridden on cmd)
Total bytes of diff: 55682364 (overridden on cmd)
Total bytes of delta: -38600 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 191095.dasm (1.09 % of base)
           4 : 34694.dasm (1.09 % of base)
           4 : 179259.dasm (1.09 % of base)

Top file improvements (bytes):
        -384 : 135764.dasm (-15.76 % of base)
        -360 : 135763.dasm (-15.68 % of base)
        -336 : 135761.dasm (-15.58 % of base)
        -320 : 140894.dasm (-20.36 % of base)
        -320 : 109249.dasm (-13.91 % of base)
        -312 : 135759.dasm (-15.48 % of base)
        -288 : 135757.dasm (-15.35 % of base)
        -264 : 135755.dasm (-15.21 % of base)
        -240 : 135753.dasm (-15.04 % of base)
        -216 : 79634.dasm (-17.14 % of base)
        -216 : 79635.dasm (-16.77 % of base)
        -216 : 135751.dasm (-14.84 % of base)
        -192 : 135749.dasm (-14.59 % of base)
        -176 : 76076.dasm (-47.31 % of base)
        -168 : 135747.dasm (-14.29 % of base)
        -156 : 76091.dasm (-40.21 % of base)
        -144 : 135524.dasm (-9.00 % of base)
        -144 : 135745.dasm (-13.90 % of base)
        -140 : 78554.dasm (-14.71 % of base)
        -136 : 135721.dasm (-10.30 % of base)

68 total files with Code Size differences (65 improved, 3 regressed), 7 unchanged.

Top method regressions (bytes):
           4 (1.09 % of base) : 191095.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 34694.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 179259.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) : 135764.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) : 135763.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) : 135761.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -320 (-20.36 % of base) : 140894.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -320 (-13.91 % of base) : 109249.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -312 (-15.48 % of base) : 135759.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) : 135757.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) : 135755.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) : 135753.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) : 135751.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) : 79634.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -216 (-16.77 % of base) : 79635.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) : 135749.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) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -168 (-14.29 % of base) : 135747.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) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -144 (-13.90 % of base) : 135745.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) : 135524.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) : 78554.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.30 % of base) : 135721.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) : 191095.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 34694.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 179259.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) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -156 (-40.21 % of base) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -40 (-35.71 % of base) : 135236.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -36 (-34.62 % of base) : 80080.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 79603.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 183931.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-33.33 % of base) : 109313.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 35761.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 180304.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 145705.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) : 228724.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) : 208745.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) : 135695.dasm - CSharpx.Either:GetLeft[System.__Canon,System.__Canon](CSharpx.Either`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -32 (-30.77 % of base) : 183953.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) : 183255.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) : 230365.dasm - Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[System.__Canon]:<RegisterChangeTokenCallback>b__7_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 21378.dasm - System.Buffers.SharedArrayPool`1+<>c[System.__Canon]:<InitializeTlsBucketsAndTrimming>b__11_0(System.Object):ubyte:this (FullOpts)
         -36 (-28.12 % of base) : 231285.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 214041.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<OfferAsyncIfNecessary>b__29_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 214069.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__49_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: 60103176 (overridden on cmd)
Total bytes of diff: 60085592 (overridden on cmd)
Total bytes of delta: -17584 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         136 : 186600.dasm (17.62 % of base)
         136 : 299717.dasm (8.81 % of base)
         136 : 307138.dasm (19.54 % of base)
         132 : 24480.dasm (18.13 % of base)
         128 : 24629.dasm (30.48 % of base)
         128 : 24634.dasm (30.48 % of base)
         128 : 24630.dasm (30.48 % of base)
         128 : 24631.dasm (30.48 % of base)
         128 : 24632.dasm (30.48 % of base)
         128 : 24633.dasm (30.48 % of base)
         116 : 132000.dasm (4.86 % of base)
         112 : 24628.dasm (31.11 % of base)
          72 : 125161.dasm (2.65 % of base)
          64 : 48077.dasm (2.55 % of base)
          64 : 244356.dasm (2.55 % of base)
          56 : 202697.dasm (5.24 % of base)
          44 : 262284.dasm (8.59 % of base)
          44 : 262316.dasm (6.59 % of base)
          44 : 262575.dasm (12.79 % of base)
          44 : 262585.dasm (10.09 % of base)

Top file improvements (bytes):
        -600 : 312705.dasm (-25.17 % of base)
        -320 : 110143.dasm (-19.32 % of base)
        -316 : 188399.dasm (-17.14 % of base)
        -264 : 254522.dasm (-36.46 % of base)
        -240 : 80525.dasm (-8.61 % of base)
        -204 : 246589.dasm (-6.89 % of base)
        -204 : 50399.dasm (-6.89 % of base)
        -192 : 113835.dasm (-7.03 % of base)
        -180 : 109363.dasm (-22.61 % of base)
        -180 : 109370.dasm (-21.84 % of base)
        -172 : 208058.dasm (-8.57 % of base)
        -168 : 208702.dasm (-42.00 % of base)
        -132 : 208704.dasm (-5.91 % of base)
        -120 : 109524.dasm (-18.99 % of base)
        -120 : 109533.dasm (-18.29 % of base)
        -116 : 25435.dasm (-11.11 % of base)
        -112 : 253172.dasm (-1.83 % of base)
        -104 : 211675.dasm (-19.40 % of base)
         -96 : 212657.dasm (-10.67 % of base)
         -80 : 182301.dasm (-1.73 % of base)

75 total files with Code Size differences (52 improved, 23 regressed), 20 unchanged.

Top method regressions (bytes):
         136 (19.54 % of base) : 307138.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         136 (8.81 % of base) : 299717.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
         136 (17.62 % of base) : 186600.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         132 (18.13 % of base) : 24480.dasm - System.Runtime.InteropServices.DynamicInterfaceCastableHelpers:GetInterfaceImplementation(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType):System.RuntimeType (FullOpts)
         128 (30.48 % of base) : 24632.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         128 (30.48 % of base) : 24631.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         128 (30.48 % of base) : 24634.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         128 (30.48 % of base) : 24630.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         128 (30.48 % of base) : 24633.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         128 (30.48 % of base) : 24629.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
         116 (4.86 % of base) : 132000.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
         112 (31.11 % of base) : 24628.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.__Canon](long):System.__Canon (FullOpts)
          72 (2.65 % of base) : 125161.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          64 (2.55 % of base) : 48077.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          64 (2.55 % of base) : 244356.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          56 (5.24 % of base) : 202697.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
          44 (6.59 % of base) : 262316.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
          44 (8.59 % of base) : 262284.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          44 (12.79 % of base) : 262575.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          44 (10.09 % of base) : 262585.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 312705.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -320 (-19.32 % of base) : 110143.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -316 (-17.14 % of base) : 188399.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -264 (-36.46 % of base) : 254522.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
        -240 (-8.61 % of base) : 80525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -204 (-6.89 % of base) : 50399.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -204 (-6.89 % of base) : 246589.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
        -192 (-7.03 % of base) : 113835.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -180 (-22.61 % of base) : 109363.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -180 (-21.84 % of base) : 109370.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) : 208058.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
        -168 (-42.00 % of base) : 208702.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -132 (-5.91 % of base) : 208704.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
        -120 (-18.29 % of base) : 109533.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -120 (-18.99 % of base) : 109524.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -116 (-11.11 % of base) : 25435.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
        -112 (-1.83 % of base) : 253172.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
        -104 (-19.40 % of base) : 211675.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
         -96 (-10.67 % of base) : 212657.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
         -80 (-1.73 % of base) : 182301.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
         112 (31.11 % of base) : 24628.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.__Canon](long):System.__Canon (FullOpts)
         128 (30.48 % of base) : 24632.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         128 (30.48 % of base) : 24631.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         128 (30.48 % of base) : 24634.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         128 (30.48 % of base) : 24630.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         128 (30.48 % of base) : 24633.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         128 (30.48 % of base) : 24629.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
          44 (22.45 % of base) : 262610.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         136 (19.54 % of base) : 307138.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         132 (18.13 % of base) : 24480.dasm - System.Runtime.InteropServices.DynamicInterfaceCastableHelpers:GetInterfaceImplementation(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType):System.RuntimeType (FullOpts)
         136 (17.62 % of base) : 186600.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
          44 (12.79 % of base) : 262575.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          44 (10.09 % of base) : 262585.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         136 (8.81 % of base) : 299717.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
          44 (8.59 % of base) : 262284.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          40 (7.52 % of base) : 295520.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
          44 (6.59 % of base) : 262316.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
          56 (5.24 % of base) : 202697.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
         116 (4.86 % of base) : 132000.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
          16 (4.35 % of base) : 96181.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 109095.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 179614.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
        -168 (-42.00 % of base) : 208702.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -264 (-36.46 % of base) : 254522.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
         -72 (-34.62 % of base) : 208623.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 271829.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) : 308365.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) : 275087.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 216537.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
         -32 (-28.57 % of base) : 26285.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) : 295323.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 295337.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 250965.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -28 (-28.00 % of base) : 410.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -32 (-27.59 % of base) : 287996.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 181710.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) : 181719.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) : 25953.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -24 (-27.27 % of base) : 169891.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
         -24 (-27.27 % of base) : 169765.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):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: 289883304 (overridden on cmd)
Total bytes of diff: 289906212 (overridden on cmd)
Total bytes of delta: 22908 (0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         548 : 380680.dasm (15.87 % of base)
         360 : 316147.dasm (2.77 % of base)
         344 : 381252.dasm (13.17 % of base)
         340 : 380723.dasm (13.91 % of base)
         336 : 379792.dasm (9.14 % of base)
         336 : 64054.dasm (8.97 % of base)
         332 : 380236.dasm (14.43 % of base)
         332 : 380757.dasm (14.85 % of base)
         328 : 379509.dasm (11.28 % of base)
         320 : 171719.dasm (2.53 % of base)
         244 : 483363.dasm (1.88 % of base)
         240 : 324245.dasm (1.86 % of base)
         240 : 631865.dasm (1.86 % of base)
         232 : 179011.dasm (1.79 % of base)
         228 : 399320.dasm (30.00 % of base)
         216 : 323252.dasm (10.65 % of base)
         184 : 500187.dasm (1.47 % of base)
         180 : 293643.dasm (1.36 % of base)
         180 : 445700.dasm (1.26 % of base)
         180 : 333611.dasm (1.26 % of base)

Top file improvements (bytes):
        -356 : 158054.dasm (-7.69 % of base)
        -180 : 572549.dasm (-2.55 % of base)
        -124 : 429341.dasm (-1.05 % of base)
        -112 : 573247.dasm (-2.16 % of base)
        -108 : 569561.dasm (-2.64 % of base)
        -108 : 478961.dasm (-6.04 % of base)
        -104 : 394413.dasm (-4.77 % of base)
         -84 : 541853.dasm (-0.91 % of base)
         -84 : 478960.dasm (-21.21 % of base)
         -80 : 634826.dasm (-23.26 % of base)
         -80 : 489625.dasm (-7.07 % of base)
         -80 : 568573.dasm (-0.90 % of base)
         -76 : 66567.dasm (-5.15 % of base)
         -68 : 462512.dasm (-9.88 % of base)
         -64 : 93927.dasm (-1.42 % of base)
         -64 : 301329.dasm (-19.05 % of base)
         -64 : 62421.dasm (-1.34 % of base)
         -64 : 486570.dasm (-3.14 % of base)
         -60 : 541902.dasm (-14.29 % of base)
         -60 : 407583.dasm (-2.02 % of base)

85 total files with Code Size differences (49 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         548 (15.87 % of base) : 380680.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
         360 (2.77 % of base) : 316147.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         344 (13.17 % of base) : 381252.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (Tier0-FullOpts)
         340 (13.91 % of base) : 380723.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read2_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         336 (8.97 % of base) : 64054.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection:AllocateContainerForUnmanagedElementsWithCallerAllocatedBuffer(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol):Microsoft.CodeAnalysis.IMethodSymbol (Tier1)
         336 (9.14 % of base) : 379792.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
         332 (14.43 % of base) : 380236.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         332 (14.85 % of base) : 380757.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         328 (11.28 % of base) : 379509.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
         320 (2.53 % of base) : 171719.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         244 (1.88 % of base) : 483363.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         240 (1.86 % of base) : 324245.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         240 (1.86 % of base) : 631865.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         232 (1.79 % of base) : 179011.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         228 (30.00 % of base) : 399320.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         216 (10.65 % of base) : 323252.dasm - System.Collections.Hashtable:get_Item(System.Object):System.Object:this (Tier1)
         184 (1.47 % of base) : 500187.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         180 (1.26 % of base) : 445700.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.26 % of base) : 333611.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.36 % of base) : 293643.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method improvements (bytes):
        -356 (-7.69 % of base) : 158054.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
        -180 (-2.55 % of base) : 572549.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)
        -124 (-1.05 % of base) : 429341.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
        -112 (-2.16 % of base) : 573247.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 (-6.04 % of base) : 478961.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 (-2.64 % of base) : 569561.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -104 (-4.77 % of base) : 394413.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
         -84 (-21.21 % of base) : 478960.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2):System.__Canon (Tier1)
         -84 (-0.91 % of base) : 541853.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -80 (-7.07 % of base) : 489625.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.90 % of base) : 568573.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -80 (-23.26 % of base) : 634826.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -76 (-5.15 % of base) : 66567.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:<VisitBinaryOperatorChildren>g__learnFromOperator|207_3(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):ubyte:this (Tier1)
         -68 (-9.88 % of base) : 462512.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
         -64 (-19.05 % of base) : 301329.dasm - (dynamicClass):lambda_method1246(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -64 (-1.34 % of base) : 62421.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)
         -64 (-1.42 % of base) : 93927.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetCustomAttribute(System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,byref,byref):ubyte:this (Tier1)
         -64 (-3.14 % of base) : 486570.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)
         -60 (-14.29 % of base) : 541902.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)
         -60 (-2.02 % of base) : 407583.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)

Top method regressions (percentages):
         228 (30.00 % of base) : 399320.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         136 (23.29 % of base) : 490540.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
         136 (19.10 % of base) : 490539.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (Tier1)
          24 (18.75 % of base) : 49939.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
          24 (18.75 % of base) : 48175.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          24 (18.75 % of base) : 82583.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
         116 (18.24 % of base) : 462901.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
          36 (18.00 % of base) : 569952.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
          24 (16.22 % of base) : 50187.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Inequality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
         100 (16.03 % of base) : 323253.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
         548 (15.87 % of base) : 380680.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
          20 (15.62 % of base) : 155000.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          36 (15.52 % of base) : 406265.dasm - System.Xml.Schema.XmlBaseConverter:IsDerivedFrom(System.Type,System.Type):ubyte (Tier1)
          88 (15.17 % of base) : 105380.dasm - System.Dynamic.Utils.TypeUtils:HasReferenceEquality(System.Type,System.Type):ubyte (Tier1)
         132 (15.07 % of base) : 490541.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Nullable`1[System.Formats.Asn1.Asn1Tag],System.Type,System.Enum):this (Tier1)
         332 (14.85 % of base) : 380757.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          92 (14.47 % of base) : 395482.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
         332 (14.43 % of base) : 380236.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          20 (14.29 % of base) : 92220.dasm - Microsoft.Interop.ManagedTypeInfo:op_Equality(Microsoft.Interop.ManagedTypeInfo,Microsoft.Interop.ManagedTypeInfo):ubyte (Tier1)
          28 (14.29 % of base) : 500414.dasm - System.Reflection.MethodInfo:op_Equality(System.Reflection.MethodInfo,System.Reflection.MethodInfo):ubyte (Tier1)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 541740.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-46.67 % of base) : 569340.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -24 (-35.29 % of base) : 62225.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
         -48 (-30.77 % of base) : 500910.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
         -32 (-28.57 % of base) : 274772.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
         -32 (-28.57 % of base) : 125474.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-28.00 % of base) : 25883.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -24 (-24.00 % of base) : 287594.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
         -40 (-23.26 % of base) : 93058.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -40 (-23.26 % of base) : 60955.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -80 (-23.26 % of base) : 634826.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -24 (-23.08 % of base) : 599826.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -20 (-22.73 % of base) : 60156.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitListElement[System.__Canon](System.__Canon):System.__Canon:this (Tier1)
         -24 (-22.22 % of base) : 542795.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
         -24 (-22.22 % of base) : 571199.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
         -28 (-21.88 % of base) : 49830.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -48 (-21.82 % of base) : 169219.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
         -84 (-21.21 % of base) : 478960.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2):System.__Canon (Tier1)
         -24 (-20.69 % of base) : 299257.dasm - (dynamicClass):lambda_method4(System.Runtime.CompilerServices.Closure):long (FullOpts)
         -32 (-20.51 % of base) : 55773.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (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: 129078576 (overridden on cmd)
Total bytes of diff: 129064620 (overridden on cmd)
Total bytes of delta: -13956 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         664 : 163550.dasm (17.74 % of base)
         428 : 163498.dasm (12.27 % of base)
         364 : 164006.dasm (13.79 % of base)
         360 : 162617.dasm (12.06 % of base)
         356 : 162816.dasm (9.78 % of base)
         352 : 162607.dasm (14.59 % of base)
         352 : 163610.dasm (14.59 % of base)
         176 : 137110.dasm (12.61 % of base)
         164 : 162558.dasm (2.68 % of base)
         164 : 162559.dasm (3.60 % of base)
         164 : 163246.dasm (2.68 % of base)
         164 : 163247.dasm (3.60 % of base)
         160 : 163572.dasm (2.92 % of base)
         148 : 163422.dasm (3.78 % of base)
         140 : 113175.dasm (10.36 % of base)
         136 : 113016.dasm (19.43 % of base)
         136 : 113121.dasm (22.97 % of base)
         136 : 113208.dasm (17.17 % of base)
         136 : 113224.dasm (22.22 % of base)
         136 : 113236.dasm (21.79 % of base)

Top file improvements (bytes):
        -600 : 61322.dasm (-25.17 % of base)
        -384 : 163817.dasm (-15.79 % of base)
        -352 : 162701.dasm (-12.59 % of base)
        -304 : 163811.dasm (-12.38 % of base)
        -296 : 209724.dasm (-17.05 % of base)
        -244 : 14172.dasm (-17.04 % of base)
        -228 : 3243.dasm (-7.52 % of base)
        -224 : 163813.dasm (-12.25 % of base)
        -224 : 50712.dasm (-8.93 % of base)
        -204 : 12475.dasm (-7.21 % of base)
        -200 : 7274.dasm (-8.17 % of base)
        -196 : 22589.dasm (-7.69 % of base)
        -184 : 16158.dasm (-9.43 % of base)
        -184 : 16213.dasm (-9.52 % of base)
        -184 : 44945.dasm (-7.76 % of base)
        -176 : 22613.dasm (-6.04 % of base)
        -176 : 163809.dasm (-6.89 % of base)
        -160 : 163814.dasm (-8.97 % of base)
        -160 : 195629.dasm (-8.97 % of base)
        -160 : 192722.dasm (-7.53 % of base)

88 total files with Code Size differences (55 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
         664 (17.74 % of base) : 163550.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         428 (12.27 % of base) : 163498.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
         364 (13.79 % of base) : 164006.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
         360 (12.06 % of base) : 162617.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         356 (9.78 % of base) : 162816.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
         352 (14.59 % of base) : 162607.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         352 (14.59 % of base) : 163610.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         176 (12.61 % of base) : 137110.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
         164 (3.60 % of base) : 162559.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (3.60 % of base) : 163247.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (2.68 % of base) : 162558.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         164 (2.68 % of base) : 163246.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         160 (2.92 % of base) : 163572.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
         148 (3.78 % of base) : 163422.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
         140 (10.36 % of base) : 113175.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic_WithTag(int) (FullOpts)
         136 (10.49 % of base) : 163164.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderNookAppLocalState:Read2_Color(ubyte):System.Drawing.Color:this (FullOpts)
         136 (18.89 % of base) : 113142.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         136 (17.17 % of base) : 113208.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
         136 (23.13 % of base) : 113114.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         136 (21.38 % of base) : 113117.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 61322.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -384 (-15.79 % of base) : 163817.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) : 162701.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) : 163811.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) : 209724.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) : 14172.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)
        -228 (-7.52 % of base) : 3243.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -224 (-8.93 % of base) : 50712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -224 (-12.25 % of base) : 163813.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
        -204 (-7.21 % of base) : 12475.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -200 (-8.17 % of base) : 7274.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -196 (-7.69 % of base) : 22589.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
        -184 (-7.76 % of base) : 44945.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -184 (-9.43 % of base) : 16158.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -184 (-9.52 % of base) : 16213.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -176 (-6.04 % of base) : 22613.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
        -176 (-6.89 % of base) : 163809.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) : 192722.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
        -160 (-8.97 % of base) : 163814.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) : 195629.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)

Top method regressions (percentages):
          48 (92.31 % of base) : 94325.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
          40 (43.48 % of base) : 92588.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
          40 (43.48 % of base) : 94559.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
         136 (39.08 % of base) : 185720.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point](long):System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point (FullOpts)
         136 (23.13 % of base) : 113114.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         136 (22.97 % of base) : 113121.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
          44 (22.45 % of base) : 176196.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         136 (22.22 % of base) : 113224.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
         136 (21.79 % of base) : 113236.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
         136 (21.38 % of base) : 113117.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
         136 (20.99 % of base) : 113128.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
         136 (19.43 % of base) : 113016.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         136 (18.89 % of base) : 113142.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         664 (17.74 % of base) : 163550.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         136 (17.17 % of base) : 113208.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
          60 (15.62 % of base) : 209650.dasm - System.Tests.ArrayTests+<>c:<CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException>b__93_0():System.Object:this (FullOpts)
          40 (14.71 % of base) : 137906.dasm - System.Linq.Tests.DistinctTests+<>c__DisplayClass26_0:<DistinctBy_SourceNull_ThrowsArgumentNullException>b__0():System.Object:this (FullOpts)
         352 (14.59 % of base) : 162607.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         352 (14.59 % of base) : 163610.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
          76 (14.07 % of base) : 139973.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 35961.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 139841.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-40.00 % of base) : 30326.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) : 161854.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) : 163197.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 67999.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 163846.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
         -24 (-31.58 % of base) : 86110.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) : 131379.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) : 47917.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 42287.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 47909.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42280.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 47913.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42284.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -32 (-28.57 % of base) : 183314.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) : 72556.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 124490.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 91369.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NonNullableField(System.Object):System.__Canon (FullOpts)
         -60 (-27.78 % of base) : 236748.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):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: 10546316 (overridden on cmd)
Total bytes of diff: 10543028 (overridden on cmd)
Total bytes of delta: -3288 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 14414.dasm (3.07 % of base)
          36 : 12441.dasm (0.81 % of base)
          16 : 4741.dasm (4.35 % of base)
           8 : 27312.dasm (0.37 % of base)
           4 : 20618.dasm (0.07 % of base)

Top file improvements (bytes):
        -200 : 18166.dasm (-8.18 % of base)
        -120 : 31392.dasm (-28.30 % of base)
         -64 : 26129.dasm (-6.81 % of base)
         -64 : 31052.dasm (-25.81 % of base)
         -60 : 8700.dasm (-32.61 % of base)
         -60 : 29550.dasm (-20.55 % of base)
         -56 : 5637.dasm (-22.22 % of base)
         -56 : 7622.dasm (-8.81 % of base)
         -56 : 31029.dasm (-2.52 % of base)
         -56 : 5055.dasm (-4.09 % of base)
         -52 : 29861.dasm (-8.28 % of base)
         -44 : 16373.dasm (-16.18 % of base)
         -44 : 28686.dasm (-2.68 % of base)
         -44 : 19336.dasm (-3.20 % of base)
         -40 : 14555.dasm (-4.81 % of base)
         -40 : 18442.dasm (-12.50 % of base)
         -40 : 31025.dasm (-17.86 % of base)
         -40 : 8348.dasm (-12.50 % of base)
         -40 : 26699.dasm (-8.06 % of base)
         -40 : 31493.dasm (-13.89 % of base)

58 total files with Code Size differences (53 improved, 5 regressed), 6 unchanged.

Top method regressions (bytes):
          52 (3.07 % of base) : 14414.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (0.81 % of base) : 12441.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          16 (4.35 % of base) : 4741.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
           8 (0.37 % of base) : 27312.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 20618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (bytes):
        -200 (-8.18 % of base) : 18166.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -120 (-28.30 % of base) : 31392.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) : 26129.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) : 31052.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) : 8700.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -60 (-20.55 % of base) : 29550.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -56 (-8.81 % of base) : 7622.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) : 5055.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) : 31029.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) : 5637.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -52 (-8.28 % of base) : 29861.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) : 19336.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) : 16373.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-2.68 % of base) : 28686.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
         -40 (-12.50 % of base) : 8348.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
         -40 (-4.81 % of base) : 14555.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) : 18442.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 26699.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-13.89 % of base) : 31493.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) : 31025.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)

Top method regressions (percentages):
          16 (4.35 % of base) : 4741.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
          52 (3.07 % of base) : 14414.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (0.81 % of base) : 12441.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
           8 (0.37 % of base) : 27312.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 20618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
         -60 (-32.61 % of base) : 8700.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -24 (-31.58 % of base) : 29640.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) : 31392.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) : 17016.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -64 (-25.81 % of base) : 31052.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) : 9668.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
         -56 (-22.22 % of base) : 5637.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -28 (-21.21 % of base) : 4628.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) : 14855.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -60 (-20.55 % of base) : 29550.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -32 (-19.05 % of base) : 31419.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-18.42 % of base) : 9777.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
         -20 (-17.86 % of base) : 15102.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -40 (-17.86 % of base) : 31025.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-17.50 % of base) : 10668.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
         -24 (-17.14 % of base) : 20742.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
         -44 (-16.18 % of base) : 16373.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 28860.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 10065.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+hasStaticBindings@2118-1:Invoke(FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassBindingGroup):ubyte:this (FullOpts)