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.Nullable
1[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)