Diffs are based on 91,015 contexts (37,196 MinOpts, 53,819 FullOpts).
MISSED contexts: base: 159 (0.11%), diff: 52,639 (35.66%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm64.checked.mch | 1,089,056 | -5,884 |
benchmarks.run_pgo.linux.arm64.checked.mch | 2,900,708 | -21,028 |
benchmarks.run_tiered.linux.arm64.checked.mch | 2,340,380 | -17,388 |
coreclr_tests.run.linux.arm64.checked.mch | 164,096 | -48 |
libraries.pmi.linux.arm64.checked.mch | 1,285,304 | -5,688 |
libraries_tests.run.linux.arm64.Release.mch | 2,135,476 | -21,960 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 1,090,520 | -6,984 |
realworld.run.linux.arm64.checked.mch | 1,695,560 | -17,184 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.linux.arm64.checked.mch | 2,064,608 | -16,472 |
benchmarks.run_tiered.linux.arm64.checked.mch | 2,103,408 | -15,924 |
libraries_tests.run.linux.arm64.Release.mch | 1,696,352 | -14,044 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm64.checked.mch | 1,044,220 | -5,884 |
benchmarks.run_pgo.linux.arm64.checked.mch | 836,100 | -4,556 |
benchmarks.run_tiered.linux.arm64.checked.mch | 236,972 | -1,464 |
coreclr_tests.run.linux.arm64.checked.mch | 164,096 | -48 |
libraries.pmi.linux.arm64.checked.mch | 1,285,304 | -5,688 |
libraries_tests.run.linux.arm64.Release.mch | 439,124 | -7,916 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 1,090,520 | -6,984 |
realworld.run.linux.arm64.checked.mch | 1,681,048 | -17,184 |
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect"
+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
@@ -33,22 +28,12 @@ G_M31219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M31219_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M31219_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M31219_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M31219_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M31219_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M31219_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31219_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]
@@ -59,27 +44,12 @@ G_M31219_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M31219_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M31219_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M31219_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M31219_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M31219_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M31219_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M31219_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY add x1, fp, #16 // [V01 arg0]
mov x2, x20
; gcrRegs +[x2]
@@ -89,14 +59,14 @@ G_M31219_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20] +[x0]- ;; size=28 bbWeight=1 PerfScore 6.50
-G_M31219_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=96 bbWeight=1 PerfScore 19.00
+G_M31219_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 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=765d860c) for method System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=765d860c) for method System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)+ Function Length : 33 (0x00021) Actual length = 132 (0x000084) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect"
+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
@@ -33,22 +28,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41289_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M41289_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]
@@ -59,27 +44,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M41289_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M41289_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M41289_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY add x1, fp, #16 // [V01 arg0]
mov x2, x20
; gcrRegs +[x2]
@@ -89,14 +59,14 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20] +[x0]- ;; size=28 bbWeight=1 PerfScore 6.50
-G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=96 bbWeight=1 PerfScore 19.00
+G_M41289_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 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)+ Function Length : 33 (0x00021) Actual length = 132 (0x000084) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,22 +7,17 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
mov w21, w2
;; size=32 bbWeight=1 PerfScore 6.00-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M26687_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
mov w2, w21
@@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x1]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M26687_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M26687_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=88 bbWeight=1 PerfScore 17.50
+G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -32,7 +32,7 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_CHKCASTINTERFACE+ bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x19
@@ -40,8 +40,9 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32+ ldr wzr, [x0] ldr x2, [x11]- ;; size=40 bbWeight=0.50 PerfScore 4.00+ ;; size=44 bbWeight=0.50 PerfScore 5.50 G_M31221_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -58,7 +59,7 @@ G_M31221_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +70,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -32,7 +32,7 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_CHKCASTINTERFACE+ bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x19
@@ -40,8 +40,9 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32+ ldr wzr, [x0] ldr x2, [x11]- ;; size=40 bbWeight=0.50 PerfScore 4.00+ ;; size=44 bbWeight=0.50 PerfScore 5.50 G_M21263_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -58,7 +59,7 @@ G_M21263_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +70,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[System.ValueTuple
2[System.Canon,System.Canon]]):System.ValueTuple`2[System.Canon,System.__Canon]@@ -8,33 +8,26 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> ; V02 loc0 [V02 ] ( 1, 1 ) struct (128) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect"
-; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect"
-; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect"
-; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup"
-; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect"
+; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect"
+; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 408
@@ -60,23 +53,20 @@ G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
;; size=76 bbWeight=1 PerfScore 15.00-G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M13440_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M13440_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M13440_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M13440_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY add x1, fp, #0xD1FFAB1E // [V02 loc0]+ mov x0, x21 mov w2, #8
movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon]](byref,int):System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]
movk x3, #0xD1FFAB1E LSL #16
@@ -88,29 +78,13 @@ G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0]
str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8]
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]- ldr x0, [x19, #0x38]
- ; byrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M13440_IG08
- ;; size=60 bbWeight=1 PerfScore 18.00
-G_M13440_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x0, #0x18]
- cbz x21, G_M13440_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13440_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M13440_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13440_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x21, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x1, x21+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
mov x2, x20
; gcrRegs +[x2]
@@ -120,7 +94,12 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20]- mov x1, x21+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray():System.ValueTuple`2[System.__Canon,System.__Canon][]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -128,27 +107,32 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- mov x19, x0
- ; gcrRegs +[x19]
- mov x1, x21
- add x0, fp, #24 // [V03 loc1]+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov x0, x19 ; gcrRegs -[x0]+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:Dispose():this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2- mov x0, x19+ mov x0, x20 ; gcrRegs +[x0]- ;; size=96 bbWeight=1 PerfScore 21.00
-G_M13440_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=248 bbWeight=1 PerfScore 47.50
+G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0xD1FFAB1E]
ldp x19, x20, [sp, #0xD1FFAB1E]
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts) ; ============================================================
Unwind Info:
@@ -159,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 80 (0x00050) Actual length = 320 (0x000140)+ Function Length : 85 (0x00055) Actual length = 340 (0x000154) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M34046_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M34046_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov x1, xzr
mov w2, wzr
@@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=32 bbWeight=1 PerfScore 8.50
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 14.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -65,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x30] // [V00 TypeCtx]
str x1, [fp, #0x28] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M56297_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V04 tmp1]
- b G_M56297_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V04 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x2, fp, #32 // [V02 loc0]
ldr x0, [fp, #0x18] // [V04 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)+ Function Length : 21 (0x00015) Actual length = 84 (0x000054) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.20) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.24) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.20) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.40) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.81) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.62) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.62) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 0.81) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.13) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.20 PerfScore 1.41
-G_M58319_IG04: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.20 PerfScore 1.41
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.20 PerfScore 2.62
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 17.61, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 16.62, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.20) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.25) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.20) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.41) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.82) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.64) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.64) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 0.82) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.15) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.20 PerfScore 1.43
-G_M58319_IG04: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.20 PerfScore 1.43
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.20 PerfScore 2.66
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 17.65, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 16.66, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
1[System.DateTimeOffset]]():System.Nullable
1System.DateTimeOffset@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_BOX+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]
str x0, [fp, #0x10] // [V04 tmp2]- ldr x2, [fp, #0x10] // [V04 tmp2]
- ; gcrRegs +[x2]
- ldr x0, [fp, #0x38] // [V00 RetBuf]+ ldr x1, [fp, #0x10] // [V04 tmp2]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E ; gcrRegs -[x0]+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1] ; byrRegs +[x0]- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- ; byrRegs -[x0]
- ;; size=120 bbWeight=1 PerfScore 25.50+ ldr x1, [fp, #0x38] // [V00 RetBuf]
+ ; byrRegs +[x1]
+ ldp x2, x3, [x0]
+ stp x2, x3, [x1]
+ ldr x2, [x0, #0x10]
+ str x2, [x1, #0x10]
+ ;; size=136 bbWeight=1 PerfScore 34.50 G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0) ; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 38 (0x00026) Actual length = 152 (0x000098)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M34046_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M34046_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov x1, xzr
mov w2, wzr
@@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=32 bbWeight=1 PerfScore 8.50
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 14.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -65,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x30] // [V00 TypeCtx]
str x1, [fp, #0x28] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M56297_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V04 tmp1]
- b G_M56297_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V04 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x2, fp, #32 // [V02 loc0]
ldr x0, [fp, #0x18] // [V04 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)+ Function Length : 21 (0x00015) Actual length = 84 (0x000054) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -47,9 +47,11 @@ G_M65136_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #40- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
@@ -8,84 +8,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x19 single-def+; V00 this [V00,T03] ( 3, 2.50) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x20 single-def ; V03 loc0 [V03,T02] ( 7, 5 ) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 2 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 2.80) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.50 PerfScore 6.50
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 20.50, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -96,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,9 +98,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]!+ 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]!
+ E4 end E4 end
E4 end
1[System.DateTimeOffset]]():System.Nullable
1System.DateTimeOffset@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_BOX+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]
str x0, [fp, #0x10] // [V04 tmp2]- ldr x2, [fp, #0x10] // [V04 tmp2]
- ; gcrRegs +[x2]
- ldr x0, [fp, #0x38] // [V00 RetBuf]+ ldr x1, [fp, #0x10] // [V04 tmp2]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E ; gcrRegs -[x0]+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1] ; byrRegs +[x0]- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- ; byrRegs -[x0]
- ;; size=120 bbWeight=1 PerfScore 25.50+ ldr x1, [fp, #0x38] // [V00 RetBuf]
+ ; byrRegs +[x1]
+ ldp x2, x3, [x0]
+ stp x2, x3, [x1]
+ ldr x2, [x0, #0x10]
+ str x2, [x1, #0x10]
+ ;; size=136 bbWeight=1 PerfScore 34.50 G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0) ; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 38 (0x00026) Actual length = 152 (0x000098)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,26 +7,21 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T06] ( 7, 4.88) long -> x20 single-def
-; V01 arg0 [V01,T07] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T04] ( 5, 12 ) long -> x20 single-def
+; V01 arg0 [V01,T06] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 arg1 [V02,T01] ( 5, 19 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>-; V03 arg2 [V03,T08] ( 4, 4 ) byref -> x22 single-def+; V03 arg2 [V03,T07] ( 4, 4 ) byref -> x22 single-def ; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>-; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x20 class-hnd <System.__Canon>
-; V06 loc2 [V06,T14] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>+; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x23 class-hnd <System.__Canon>
+; V06 loc2 [V06,T09] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon> ;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V10 tmp2 [V10,T09] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V10 tmp2 [V10,T08] ( 3, 6 ) long -> x11 "VirtualCall with runtime lookup" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"-; V13 PSPSym [V13,T15] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T05] ( 2, 8.50) long -> x23 hoist "CSE - aggressive"
-; V15 cse1 [V15,T04] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive"
-; V16 rat0 [V16,T10] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-; V17 rat1 [V17,T13] ( 3, 2 ) long -> x23 "runtime lookup"
-; V18 rat2 [V18,T11] ( 3, 2.80) long -> x0 "spilling expr"
-; V19 rat3 [V19,T12] ( 3, 2.24) long -> x23 "fgMakeTemp is creating a new local variable"+; V13 PSPSym [V13,T10] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T05] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive" ;
; Lcl frame size = 40
@@ -47,27 +42,17 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x22, x3
; byrRegs +[x22]
;; size=48 bbWeight=1 PerfScore 9.00-G_M62024_IG02: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; GC ptr vars +{V06 V14}
- cbz x21, G_M62024_IG21
- cbz x19, G_M62024_IG22
- ldr x0, [x20, #0x38]
- ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M62024_IG03: ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- b G_M62024_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M62024_IG04: ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref+G_M62024_IG02: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; GC ptr vars +{V06}
+ cbz x21, G_M62024_IG14
+ cbz x19, G_M62024_IG15 mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov x11, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21
; gcrRegs +[x0]
ldr x1, [x11]
@@ -76,9 +61,8 @@ G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
; gcr arg pop 0
str x0, [fp, #0x20] // [V04 loc0]
; GC ptr vars +{V04}- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; GC ptr vars -{V14}+ ;; size=48 bbWeight=1 PerfScore 11.00
+G_M62024_IG03: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz movz x21, #24
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -87,69 +71,53 @@ G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs
blr x1
; gcrRegs -[x0]
; gcr arg pop 0- cbz w0, G_M62024_IG14+ cbz w0, G_M62024_IG07 ;; size=28 bbWeight=1 PerfScore 7.00-G_M62024_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ldr x0, [x20, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M62024_IG10
- ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M62024_IG08: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ldr x23, [x0, #0x18]
- cbz x23, G_M62024_IG10
- ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M62024_IG09: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
- b G_M62024_IG11
- ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M62024_IG10: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref+G_M62024_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x23, x0
- ;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M62024_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- mov x11, x23+ mov x11, x0 ldr x0, [fp, #0x20] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
; gcr arg pop 0- mov x20, x0
- ; gcrRegs +[x20]
- mov x1, x20+ mov x23, x0
+ ; gcrRegs +[x23]
+ mov x1, x23 ; gcrRegs +[x1]
ldr x0, [x19, #0x08]
ldr x2, [x19, #0x18]
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0- cbnz w0, G_M62024_IG13+ cbnz w0, G_M62024_IG06 ldr x0, [fp, #0x20] // [V04 loc0]
; gcrRegs +[x0]
mov x11, x21
ldr x1, [x11]
blr x1- ; gcrRegs -[x0 x20]+ ; gcrRegs -[x0 x23] ; gcr arg pop 0- cbnz w0, G_M62024_IG11
- ;; size=60 bbWeight=8 PerfScore 184.00
-G_M62024_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref+ cbnz w0, G_M62024_IG04
+ ;; size=80 bbWeight=8 PerfScore 208.00
+G_M62024_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x19]- b G_M62024_IG14+ b G_M62024_IG07 ;; size=4 bbWeight=1 PerfScore 1.00-G_M62024_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
- ; gcrRegs +[x20]+G_M62024_IG06: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+ ; gcrRegs +[x23] mov w0, #1
strb w0, [x22]- str x20, [fp, #0x18] // [V06 loc2]
- b G_M62024_IG15+ str x23, [fp, #0x18] // [V06 loc2]
+ b G_M62024_IG08 ;; size=16 bbWeight=1 PerfScore 3.50-G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs -[x20]+G_M62024_IG07: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+ ; gcrRegs -[x23] ; GC ptr vars -{V06}
ldr x0, [fp, #0x20] // [V04 loc0]
; gcrRegs +[x0]
@@ -159,44 +127,44 @@ G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=000
blr x1
; gcrRegs -[x0]
; gcr arg pop 0- b G_M62024_IG19+ b G_M62024_IG12 ;; size=20 bbWeight=1 PerfScore 7.50-G_M62024_IG15: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M62024_IG08: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x22]- ; GC ptr vars +{V02 V04 V06 V14}+ ; GC ptr vars +{V02 V04 V06} ldr x0, [fp, #0x30] // [V13 PSPSym]- bl G_M62024_IG23+ bl G_M62024_IG16 ;; size=8 bbWeight=1 PerfScore 3.00-G_M62024_IG16: ; bbWeight=1, nogc, extend+G_M62024_IG09: ; bbWeight=1, nogc, extend nop
;; size=4 bbWeight=1 PerfScore 0.50-G_M62024_IG17: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V02 V04 V14}+G_M62024_IG10: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V02 V04} ldr x0, [fp, #0x18] // [V06 loc2]
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 2.00-G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend+G_M62024_IG11: ; bbWeight=1, epilog, nogc, extend ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00-G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref+G_M62024_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref ; gcrRegs -[x0]
; byrRegs +[x22]
; GC ptr vars -{V06}
strb wzr, [x22]
mov x0, xzr
;; size=8 bbWeight=1 PerfScore 1.50-G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend+G_M62024_IG13: ; bbWeight=1, epilog, nogc, extend ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00-G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M62024_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x22]
mov w0, #17
movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
@@ -207,7 +175,7 @@ G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00-G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #12
movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -217,8 +185,8 @@ G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00-G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V04 V06 V14}+G_M62024_IG16: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V04 V06} stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -226,21 +194,21 @@ G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs
add x3, fp, #96
str x3, [sp, #0x10]
;; size=24 bbWeight=1 PerfScore 5.50-G_M62024_IG24: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz...
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Roslyn.Utilities.SpecializedCollections+ReadOnly+Enumerable`2[System.__Canon,System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M9302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M9302_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M9302_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M9302_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M9302_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M9302_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M9302_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M9302_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M9302_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M9302_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M9302_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=a3eadba9) for method Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=a3eadba9) for method Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Roslyn.Utilities.SpecializedCollections+Singleton+List`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M56400_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M56400_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M56400_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M56400_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M56400_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M56400_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M56400_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M56400_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M56400_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M56400_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M56400_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=5f5123af) for method Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=5f5123af) for method Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 4.88) long -> x19 single-def
-; V01 arg0 [V01,T02] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 5, 4.50) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ;# 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,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon[]>+; V04 tmp2 [V04,T02] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon[]> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp5 [V07,T05] ( 2, 4 ) long -> x0 "argument with side effect"
-; V08 tmp6 [V08,T09] ( 2, 2 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T08] ( 3, 2 ) long -> x0 "runtime lookup"
-; V12 rat3 [V12,T06] ( 3, 2.80) long -> x0 "spilling expr"
-; V13 rat4 [V13,T07] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp5 [V07,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V08 tmp6 [V08,T04] ( 2, 2 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
@@ -34,73 +29,48 @@ G_M45934_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50
G_M45934_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M45934_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M45934_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M45934_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M45934_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M45934_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz mov x1, x20
; gcrRegs +[x1]- bl CORINFO_HELP_ISINSTANCEOFARRAY+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[x1] +[x0]
; gcr arg pop 0- cbnz x0, G_M45934_IG12
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M45934_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ cbnz x0, G_M45934_IG05
+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M45934_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M45934_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M45934_IG07: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M45934_IG09
- ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M45934_IG08: ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M45934_IG10
- ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M45934_IG09: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=20 bbWeight=0.18 PerfScore 0.54
-G_M45934_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M45934_IG11: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M45934_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50-G_M45934_IG12: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc+G_M45934_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x1 x20] +[x0]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 24, PerfScore 27.11, instruction count 41, allocated bytes for code 164 (MethodHash=b3b24c91) for method Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)+; Total bytes of code 120, prolog size 24, PerfScore 17.00, instruction count 30, allocated bytes for code 120 (MethodHash=b3b24c91) for method Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts) ; ============================================================
Unwind Info:
@@ -111,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,52 +8,42 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) byref -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) byref -> x20 single-def ;* V02 arg1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V08 tmp3 [V08,T03] ( 3, 2.50) ref -> x20 single-def "field V02.array (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T06] ( 3, 2.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP
-;* V10 tmp5 [V10,T07] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T05] ( 2, 4 ) long -> x0 "argument with side effect"
-; V12 rat0 [V12,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V13 rat1 [V13,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"+; V08 tmp3 [V08,T02] ( 3, 2.50) ref -> x21 single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V09 tmp4 [V09,T04] ( 3, 2.50) ref -> x20 "field V03.array (fldOffset=0x0)" P-INDEP
+;* V10 tmp5 [V10,T05] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V11 tmp6 [V11,T03] ( 2, 4 ) long -> x0 "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M16590_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!- stp x19, x20, [sp, #0x20]+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28] mov fp, sp- str x0, [fp, #0x18]
- mov x19, x1
- ; byrRegs +[x19]
- mov x20, x2
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M16590_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M16590_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M16590_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x2
- b G_M16590_IG05
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M16590_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref+ str x0, [fp, #0x10]
+ mov x19, x0
+ mov x20, x1
+ ; byrRegs +[x20]
+ mov x21, x2
+ ; gcrRegs +[x21]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M16590_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=16 bbWeight=0.20 PerfScore 0.50
-G_M16590_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- mov x1, x19+ bl CORINFO_HELP_MEMCPY
+ mov x1, x20 ; byrRegs +[x1]- mov x2, x20+ mov x2, x21 ; gcrRegs +[x2]
mov x3, xzr
movz x4, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableInterlocked:InterlockedCompareExchange[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]
@@ -62,27 +52,41 @@ G_M16590_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
ldr x4, [x4]
blr x4
; gcrRegs -[x2] +[x0]- ; byrRegs -[x1 x19]
- cbz x0, G_M16590_IG07
- ;; size=36 bbWeight=1 PerfScore 8.00
-G_M16590_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x20]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M16590_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x20]+ ; byrRegs -[x1 x20]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov x0, x19
+ ; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ cbz x20, G_M16590_IG05
+ ;; size=80 bbWeight=1 PerfScore 14.50
+G_M16590_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21] mov x0, x20
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25-G_M16590_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]+G_M16590_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30
ret lr- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M16590_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20] +[x21]
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M16590_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 -; Total bytes of code 124, prolog size 16, PerfScore 24.45, instruction count 31, allocated bytes for code 124 (MethodHash=fa43bf31) for method Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)+; Total bytes of code 152, prolog size 20, PerfScore 26.00, instruction count 38, allocated bytes for code 152 (MethodHash=fa43bf31) for method Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -93,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)+ 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)
@@ -104,10 +108,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end- E4 end
- E4 end
@@ -8,69 +8,68 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;
; Lcl frame size = 8
G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18]- str x21, [sp, #0x28]+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38] mov fp, sp
str x0, [fp, #0x10]- mov x20, x1+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov w22, w2
+ mov x20, x3 ; gcrRegs +[x20]- mov w21, w2
- mov x19, x3
- ; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x11, [x1, #0x10]
- cbz x11, G_M18340_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M18340_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+ ;; size=40 bbWeight=1 PerfScore 7.50
+G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x11, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x21 ; gcrRegs +[x0]- mov x1, x19+ mov x11, x23
+ mov x1, x20 ; gcrRegs +[x1]- ldr x2, [x11]+ ldr x2, [x23] blr x2- ; gcrRegs -[x1 x19-x20]
- uxtb w1, w21
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]+ ; gcrRegs -[x1 x20-x21]
+ uxtb w1, w22
+ ;; size=68 bbWeight=1 PerfScore 12.50
+G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=20 bbWeight=1 PerfScore 6.00 -; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -81,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)+ Function Length : 32 (0x00020) Actual length = 128 (0x000080) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,9 +88,9 @@ 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]+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+ E6 save_next C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
@@ -8,69 +8,68 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon]>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;
; Lcl frame size = 8
G_M6212_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18]- str x21, [sp, #0x28]+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38] mov fp, sp
str x0, [fp, #0x10]- mov x20, x1+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov w22, w2
+ mov x20, x3 ; gcrRegs +[x20]- mov w21, w2
- mov x19, x3
- ; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M6212_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x11, [x1, #0x10]
- cbz x11, G_M6212_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M6212_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M6212_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M6212_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+ ;; size=40 bbWeight=1 PerfScore 7.50
+G_M6212_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x11, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M6212_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x21 ; gcrRegs +[x0]- mov x1, x19+ mov x11, x23
+ mov x1, x20 ; gcrRegs +[x1]- ldr x2, [x11]+ ldr x2, [x23] blr x2- ; gcrRegs -[x1 x19-x20]
- uxtb w1, w21
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M6212_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]+ ; gcrRegs -[x1 x20-x21]
+ uxtb w1, w22
+ ;; size=68 bbWeight=1 PerfScore 12.50
+G_M6212_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=20 bbWeight=1 PerfScore 6.00 -; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=b35ce7bb) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=b35ce7bb) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -81,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)+ Function Length : 32 (0x00020) Actual length = 128 (0x000080) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,9 +88,9 @@ 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]+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+ E6 save_next C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41558_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M41558_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x1, [x1]
blr x1
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=48 bbWeight=1 PerfScore 13.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -63,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)+ 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)
@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41558_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M41558_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x1, [x1]
blr x1
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=48 bbWeight=1 PerfScore 13.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -63,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)+ 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)
@@ -17,28 +17,13 @@ G_M23939_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M23939_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M23939_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M23939_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M23939_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M23939_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M23939_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M23939_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov w1, #1
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -47,13 +32,13 @@ G_M23939_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- ;; size=28 bbWeight=1 PerfScore 8.00
-G_M23939_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 13.50
+G_M23939_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 31.60, instruction count 28, allocated bytes for code 112 (MethodHash=d364a27c) for method Moq.Mock:Of[System.__Canon]():System.__Canon (Tier0)+; Total bytes of code 76, prolog size 12, PerfScore 19.00, instruction count 19, allocated bytes for code 76 (MethodHash=d364a27c) for method Moq.Mock:Of[System.__Canon]():System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -64,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,27 +78,30 @@ G_M22456_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=1 PerfScore 9.00
G_M22456_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ ldr x1, [fp, #0x18] // [V07 tmp5]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ldrh w1, [x0]
+ strh w1, [fp, #0x40] add x0, fp, #64 // [V01 loc0]- ldr x2, [fp, #0x18] // [V07 tmp5]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- add x0, fp, #64 // [V01 loc0]+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1- ;; size=48 bbWeight=1 PerfScore 11.00+ ;; size=52 bbWeight=1 PerfScore 14.50 G_M22456_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0) ; ============================================================
Unwind Info:
@@ -109,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,27 +78,30 @@ G_M61529_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=1 PerfScore 9.00
G_M61529_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ ldr x1, [fp, #0x18] // [V07 tmp5]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ldrh w1, [x0]
+ strh w1, [fp, #0x40] add x0, fp, #64 // [V01 loc0]- ldr x2, [fp, #0x18] // [V07 tmp5]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- add x0, fp, #64 // [V01 loc0]+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1- ;; size=48 bbWeight=1 PerfScore 11.00+ ;; size=52 bbWeight=1 PerfScore 14.50 G_M61529_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0) ; ============================================================
Unwind Info:
@@ -109,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,44 +11,62 @@
;
; Lcl frame size = 16
-G_M13892_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+G_M13892_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
mov fp, sp
str x0, [fp, #0x18] // [V00 this]
str x1, [fp, #0x10] // [V01 arg1]
;; size=16 bbWeight=1 PerfScore 3.50-G_M13892_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M13892_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x1, fp, #16 // [V01 arg1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_BOX+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
+ ; gcrRegs +[x0]
+ cbz x0, G_M13892_IG04
+ add x1, fp, #16 // [V01 arg1]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]
cmp x0, #0
cset x0, ne
; gcrRegs -[x0]- ;; size=28 bbWeight=1 PerfScore 4.00+ ;; size=52 bbWeight=1 PerfScore 8.00 G_M13892_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00+G_M13892_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M13892_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00 -; Total bytes of code 52, prolog size 8, PerfScore 9.50, instruction count 13, allocated bytes for code 52 (MethodHash=a75ac9bb) for method Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)+; Total bytes of code 88, prolog size 8, PerfScore 16.00, instruction count 22, allocated bytes for code 88 (MethodHash=a75ac9bb) for method Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0) ; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1- Epilog Count : 1+ Epilog Count : 2 E bit : 0
X bit : 0
Vers : 0- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)+ Function Length : 22 (0x00016) Actual length = 88 (0x000058) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)+ ---- Scope 1
+ 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 ----
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -20,36 +18,24 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M41558_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M41558_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Array:Empty[System.__Canon]():System.__Canon[]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -60,7 +46,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)
3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray
1+Builder[System.ValueTuple`3[int,int,System.__Canon]@@ -7,18 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]>
;# 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 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> x1 "argument with side effect"
-; V07 rat0 [V07,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V09 rat2 [V09,T05] ( 3, 4 ) long -> x1 "runtime lookup"
-; V10 rat3 [V10,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V11 rat4 [V11,T03] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 24
@@ -29,22 +24,12 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, x0, [fp, #0x18] // [V01 loc0]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M7461_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7461_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -52,28 +37,13 @@ G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
; gcrRegs +[x0]
str x0, [fp, #0x18] // [V01 loc0]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M7461_IG08
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x18]
- cbz x1, G_M7461_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7461_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x1, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x0, fp, #24 // [V01 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -81,14 +51,14 @@ G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=92 bbWeight=1 PerfScore 19.00
+G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.50, instruction count 42, allocated bytes for code 168 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts) ; ============================================================
Unwind Info:
@@ -99,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,18 +8,13 @@
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 7, 5.56) long -> x19 single-def
-; V01 arg0 [V01,T05] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T01] ( 5, 5 ) long -> x19 single-def
+; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 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,T02] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualStudio.Composition.DelegateServices+<>c__DisplayClass4_0`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.__Canon]>
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 rat0 [V07,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V09 rat2 [V09,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat3 [V10,T04] ( 3, 5.60) long -> x0 "spilling expr"
-; V11 rat4 [V11,T06] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -33,13 +28,13 @@ G_M49634_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50-G_M49634_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M49634_IG08
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M49634_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- bl CORINFO_HELP_NEWSFAST+G_M49634_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
@@ -50,17 +45,12 @@ G_M49634_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x20]
; byrRegs -[x14]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M49634_IG07
- ;; size=36 bbWeight=1 PerfScore 11.00
-G_M49634_IG04: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M49634_IG07
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M49634_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -73,33 +63,15 @@ G_M49634_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
str x1, [x0, #0x18]- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M49634_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=92 bbWeight=1 PerfScore 15.00
+G_M49634_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00-G_M49634_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x21]
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M49634_IG05
- ;; size=24 bbWeight=0.36 PerfScore 1.44
-G_M49634_IG08: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21] +[x20]
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M49634_IG03
- ;; size=24 bbWeight=0.20 PerfScore 0.80 -; Total bytes of code 180, prolog size 20, PerfScore 39.44, instruction count 45, allocated bytes for code 180 (MethodHash=3e6f3e1d) for method Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 25.50, instruction count 34, allocated bytes for code 136 (MethodHash=3e6f3e1d) for method Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -110,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T04] ( 5, 3.60) long -> x0 single-def
-; V01 arg0 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V02 arg1 [V02,T06] ( 3, 3 ) ubyte -> x2 single-def+; V00 TypeCtx [V00,T01] ( 7, 11.50) long -> x19 single-def
+; V01 arg0 [V01,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
+; V02 arg1 [V02,T05] ( 3, 3 ) ubyte -> x2 single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>-; V04 loc1 [V04 ] ( 2, 8 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>+; V04 loc1 [V04 ] ( 2, 4 ) struct (80) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -21,39 +21,39 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"-;* V13 tmp7 [V13,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp8 [V14,T01] ( 3, 12 ) ubyte -> x0 "Inline stloc first use temp"+;* V13 tmp7 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V14 tmp8 [V14,T03] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>-; V18 tmp12 [V18,T02] ( 4, 9 ) ref -> x19 "field V03._builder (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T00] ( 8, 18 ) int -> x20 "field V03._index (fldOffset=0x8)" P-INDEP+; V18 tmp12 [V18,T02] ( 3, 6.50) ref -> x20 "field V03._builder (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T00] ( 5, 14.50) int -> x21 "field V03._index (fldOffset=0x8)" P-INDEP ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "V05.[004..005)"-; V21 tmp15 [V21,T09] ( 2, 2 ) long -> x0 "argument with side effect"
-; V22 rat0 [V22,T08] ( 3, 2 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V21 tmp15 [V21,T07] ( 2, 2 ) long -> x0 "argument with side effect" ;-; Lcl frame size = 96+; Lcl frame size = 88 -G_M36549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+G_M36549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!- stp x19, x20, [sp, #0x70]+ stp x19, x20, [sp, #0x68]
+ str x21, [sp, #0x78] mov fp, sp- add x9, fp, #24+ add x9, fp, #16 movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
stp xzr, xzr, [x9, #0x40]- str x0, [fp, #0x68]
- mov x19, x1
- ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
-G_M36549_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ str x0, [fp, #0x60]
+ mov x19, x0
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=48 bbWeight=1 PerfScore 9.50
+G_M36549_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz tst w2, #255- beq G_M36549_IG09+ beq G_M36549_IG10 ;; size=8 bbWeight=1 PerfScore 1.50-G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19+G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ mov x0, x20 ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -61,22 +61,23 @@ G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x1, [x1]
ldr wzr, [x0]
blr x1- ; gcrRegs -[x19]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w20, w1
- add w20, w20, #1
- ldr x0, [x19, #0x08]
- ldr w0, [x0, #0x10]+ ; gcrRegs -[x20]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov w21, w1
+ b G_M36549_IG05
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
+G_M36549_IG04: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]- cmp w20, w0
- bge G_M36549_IG05
- ;; size=56 bbWeight=0.50 PerfScore 9.00
-G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x08]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x0, [x20, #0x08] ; gcrRegs +[x0]- add x8, fp, #24 // [V04 loc1]
- mov w1, w20+ add x8, fp, #16 // [V04 loc1]
+ mov w1, w21 movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -84,70 +85,75 @@ G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr wzr, [x0]
blr x2
; gcrRegs -[x0]- ldrb w0, [fp, #0x34] // [V04 loc1+0x1c]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldrb w0, [fp, #0x2C] // [V04 loc1+0x1c] sub w1, w0, #1
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi- bls G_M36549_IG07
- add w20, w20, #1
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldr w0, [x0, #0x10]
- ; gcrRegs -[x0]
- cmp w20, w0
- blt G_M36549_IG04
- ;; size=80 bbWeight=4 PerfScore 102.00
-G_M36549_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M36549_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x80
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M36549_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M36549_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x80
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M36549_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M36549_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M36549_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M36549_IG12
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M36549_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+ bls G_M36549_IG08
+ ;; size=100 bbWeight=2 PerfScore 47.00
+G_M36549_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M36549_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19+ bl CORINFO_HELP_MEMCPY
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ cmp w21, w0
+ blt G_M36549_IG04
+ ;; size=40 bbWeight=4 PerfScore 44.00
+G_M36549_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36549_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
+ ldp fp, lr, [sp], #0x80
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M36549_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36549_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
+ ldp fp, lr, [sp], #0x80
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M36549_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x20]
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x20 ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.OverloadResolution:SingleValidResult[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2- ; gcrRegs -[x1 x19]
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M36549_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]+ ; gcrRegs -[x1 x20]
+ ;; size=44 bbWeight=0.50 PerfScore 4.50
+G_M36549_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68] ldp fp, lr, [sp], #0x80
ret lr- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.50 -; Total bytes of code 288, prolog size 36, PerfScore 132.85, instruction count 72, allocated bytes for code 288 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)+; Total bytes of code 336, prolog size 40, PerfScore 120.00, instruction count 84, allocated bytes for code 336 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts) ; ============================================================
Unwind Info:
@@ -158,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 72 (0x00048) Actual length = 288 (0x000120)+ Function Length : 84 (0x00054) Actual length = 336 (0x000150) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -172,10 +178,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
...
@@ -8,69 +8,68 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;
; Lcl frame size = 8
G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18]- str x21, [sp, #0x28]+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38] mov fp, sp
str x0, [fp, #0x10]- mov x20, x1+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov w22, w2
+ mov x20, x3 ; gcrRegs +[x20]- mov w21, w2
- mov x19, x3
- ; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x11, [x1, #0x10]
- cbz x11, G_M18340_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M18340_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+ ;; size=40 bbWeight=1 PerfScore 7.50
+G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x11, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x21 ; gcrRegs +[x0]- mov x1, x19+ mov x11, x23
+ mov x1, x20 ; gcrRegs +[x1]- ldr x2, [x11]+ ldr x2, [x23] blr x2- ; gcrRegs -[x1 x19-x20]
- uxtb w1, w21
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]+ ; gcrRegs -[x1 x20-x21]
+ uxtb w1, w22
+ ;; size=68 bbWeight=1 PerfScore 12.50
+G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=20 bbWeight=1 PerfScore 6.00 -; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -81,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)+ Function Length : 32 (0x00020) Actual length = 128 (0x000080) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,9 +88,9 @@ 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]+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+ E6 save_next C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray
1[System.__Canon]:this (FullOpts)@@ -8,57 +8,54 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 3 ) byref -> x19 this single-def
-; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def+; V00 this [V00,T01] ( 3, 3 ) byref -> x20 this single-def
+; V01 TypeCtx [V01,T00] ( 5, 5 ) 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"+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T04] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T03] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP ;
; Lcl frame size = 8
G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28] mov fp, sp
str x1, [fp, #0x10]- mov x19, x0
- ; byrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M44373_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- b G_M44373_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x20, x0
+ ; byrRegs +[x20]
+ mov x19, x1
+ ;; size=28 bbWeight=1 PerfScore 5.50
+G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr x1, [x19]+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x1, [x20] ; gcrRegs +[x1]- bl CORINFO_HELP_ISINSTANCEOFARRAY+ mov x0, x21
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[x1] +[x0]- ; byrRegs -[x19]
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20+ ; byrRegs -[x20]
+ ;; size=56 bbWeight=1 PerfScore 11.00
+G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30 ret lr- ;; size=12 bbWeight=1 PerfScore 4.00+ ;; size=16 bbWeight=1 PerfScore 5.00 -; Total bytes of code 76, prolog size 16, PerfScore 20.40, instruction count 19, allocated bytes for code 76 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)+; Total bytes of code 100, prolog size 20, PerfScore 21.50, instruction count 25, allocated bytes for code 100 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)+ Function Length : 25 (0x00019) Actual length = 100 (0x000064) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -77,10 +74,9 @@ Unwind Info:
---- 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
- E4 end+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
E4 end
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -20,36 +18,24 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M15963_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M15963_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -60,7 +46,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)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M3011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M3011_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M3011_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M3011_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M3011_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M3011_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M3011_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.IEnumerator+mkSeq@177[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M38576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M38576_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M38576_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M38576_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M38576_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M38576_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M38576_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,47 +9,38 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def
-; V02 arg1 [V02,T08] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T09] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V04 arg3 [V04,T10] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V04 arg3 [V04,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06,T27] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp2 [V07,T24] ( 2, 4 ) long -> x0 "spilling helperCall"
-; V08 tmp3 [V08,T25] ( 2, 4 ) long -> x24 "spilling helperCall"
-; V09 tmp4 [V09,T17] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V10 tmp5 [V10,T02] ( 3, 6 ) long -> x23 "spilling helperCall"
-;* V11 tmp6 [V11,T28] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T18] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V13 tmp8 [V13,T26] ( 2, 4 ) long -> x23 "spilling helperCall"
-; V14 tmp9 [V14,T03] ( 3, 6 ) long -> x24 "spilling helperCall"+; V06 tmp1 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V07 tmp2 [V07,T13] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V08 tmp3 [V08,T14] ( 2, 4 ) long -> x25 "spilling helperCall"
+; V09 tmp4 [V09,T05] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V10 tmp5 [V10,T15] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V11 tmp6 [V11,T16] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V12 tmp7 [V12,T06] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V13 tmp8 [V13,T17] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V14 tmp9 [V14,T18] ( 2, 4 ) long -> x25 "spilling helperCall" ; V15 tmp10 [V15,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V17 tmp12 [V17,T19] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V18 tmp13 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V21 tmp16 [V21,T23] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V22 cse0 [V22,T07] ( 4, 4 ) long -> x23 "CSE - aggressive"
-; V23 cse1 [V23,T13] ( 3, 3 ) long -> x24 "CSE - moderate"
-; V24 rat0 [V24,T14] ( 3, 4 ) long -> x23 "runtime lookup"
-; V25 rat1 [V25,T04] ( 3, 5.60) long -> x23 "fgMakeTemp is creating a new local variable"
-; V26 rat2 [V26,T15] ( 3, 4 ) long -> x24 "runtime lookup"
-; V27 rat3 [V27,T05] ( 3, 5.60) long -> x0 "spilling expr"
-; V28 rat4 [V28,T11] ( 3, 4.48) long -> x24 "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T16] ( 3, 4 ) long -> x0 "runtime lookup"
-; V30 rat6 [V30,T06] ( 3, 5.60) long -> x0 "spilling expr"
-; V31 rat7 [V31,T12] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T07] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V18 tmp13 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V19 tmp14 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V20 tmp15 [V20,T10] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V21 tmp16 [V21,T11] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x19, x1
mov x20, x2
; gcrRegs +[x20]
@@ -57,26 +48,27 @@ G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
mov x22, x4
; gcrRegs +[x22]- ;; size=40 bbWeight=1 PerfScore 7.50
-G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x23, [x0, #0x18]
- cbz x23, G_M2804_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M2804_IG03: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M2804_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M2804_IG04: ; bbWeight=0.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+ ;; size=44 bbWeight=1 PerfScore 8.50
+G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x23, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0 mov x0, x23- mov x24, x23 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -97,29 +89,20 @@ G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs -[x1-x2 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- ldr x0, [x19, #0x38]+ mov x0, x19 ; gcrRegs -[x0]- ldr x1, [x0, #0x10]
- cmp x1, #32
- ble G_M2804_IG08
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M2804_IG06: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x24, [x0, #0x20]
- cbz x24, G_M2804_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M2804_IG07: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M2804_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M2804_IG08: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x24, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x23+ mov x0, x25 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -140,33 +123,29 @@ G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs -[x1-x2 x21] +[x0]
mov x21, x0
; gcrRegs +[x21]- mov x23, x24
- ldr x0, [x19, #0x38]+ mov x0, x19 ; gcrRegs -[x0]- ldr x1, [x0, #0x10]
- cmp x1, #40
- ble G_M2804_IG12
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M2804_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x28]
- cbz x0, G_M2804_IG12
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M2804_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M2804_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M2804_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]- mov x0, x23+ mov x0, x24 ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -178,7 +157,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs +[x2]
mov x1, x21
; gcrRegs +[x1]- mov x0, x24+ mov x0, x23 ; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -190,7 +169,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs +[x2]
mov x1, x20
; gcrRegs +[x1]- mov x0, x24+ mov x0, x25 ; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -214,27 +193,28 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; byrRegs -[x14]
mov x0, x19
; gcrRegs +[x0]- ;; size=124 bbWeight=1 PerfScore 26.00
-G_M2804_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]+ ;; size=432 bbWeight=1 PerfScore 80.50
+G_M2804_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x25, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x50
ret lr- ;; size=20 bbWeight=1 PerfScore 5.00+ ;; size=24 bbWeight=1 PerfScore 7.00 -; Total bytes of code 452, prolog size 24, PerfScore 100.02, instruction count 113, allocated bytes for code 452 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)+; Total bytes of code 500, prolog size 28, PerfScore 96.00, instruction count 125, allocated bytes for code 500 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)- Code Words : 2+ Code Words : 3 Epilog Count : 1
E bit : 0
...
@@ -9,68 +9,94 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def ; V02 arg1 [V02,T02] ( 5, 5 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V04 tmp1 [V04,T25] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T22] ( 2, 4 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T23] ( 2, 4 ) long -> x22 "spilling helperCall"
-; V07 tmp4 [V07,T15] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x21 "spilling helperCall"
-;* V09 tmp6 [V09,T26] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp7 [V10,T16] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V11 tmp8 [V11,T24] ( 2, 4 ) long -> x24 "spilling helperCall"
-; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x23 "spilling helperCall"+; V04 tmp1 [V04,T10] ( 2, 4 ) long -> x21 "spilling helperCall"
+; V05 tmp2 [V05,T11] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V06 tmp3 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V08 tmp5 [V08,T13] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V09 tmp6 [V09,T14] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V11 tmp8 [V11,T15] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V12 tmp9 [V12,T16] ( 2, 4 ) long -> x25 "spilling helperCall" ; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V15 tmp12 [V15,T17] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V16 tmp13 [V16,T18] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V17 tmp14 [V17,T19] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V18 tmp15 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V19 tmp16 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V20 cse0 [V20,T08] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V21 cse1 [V21,T11] ( 3, 3 ) long -> x23 "CSE - moderate"
-; V22 rat0 [V22,T12] ( 3, 4 ) long -> x21 "runtime lookup"
-; V23 rat1 [V23,T05] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T13] ( 3, 4 ) long -> x23 "runtime lookup"
-; V25 rat3 [V25,T06] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T09] ( 3, 4.48) long -> x23 "fgMakeTemp is creating a new local variable"
-; V27 rat5 [V27,T14] ( 3, 4 ) long -> x0 "runtime lookup"
-; V28 rat6 [V28,T07] ( 3, 5.60) long -> x0 "spilling expr"
-; V29 rat7 [V29,T10] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V15 tmp12 [V15,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V16 tmp13 [V16,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V17 tmp14 [V17,T07] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M20173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x19, x1
mov x20, x2
; gcrRegs +[x20]- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x21, [x0, #0x10]
- cbz x21, G_M20173_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M20173_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M20173_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M20173_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ ;; size=36 bbWeight=1 PerfScore 7.50
+G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x21, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x22, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x21- mov x22, x21+ movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ mov x0, x22
+ ; gcrRegs -[x0]
+ movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x1-x2] +[x0]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x0, x19
+ ; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x22, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0
+ mov x0, x23 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -91,72 +117,25 @@ G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1-x2] +[x0]
mov x22, x0
; gcrRegs +[x22]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M20173_IG08
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M20173_IG06: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x23, [x0, #0x18]
- cbz x23, G_M20173_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M20173_IG07: ; bbWeight=0.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- b G_M20173_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M20173_IG08: ; bbWeight=0.36, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x23, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M20173_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x21
- movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- ; gcrRegs -[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2] +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- mov x24, x23
- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #32
- ble G_M20173_IG12
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M20173_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x20]
- cbz x0, G_M20173_IG12
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M20173_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M20173_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M20173_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
@@ -170,18 +149,6 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]- mov x1, x21
- ; gcrRegs +[x1]
- mov x0, x23
- ; gcrRegs -[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2 x21] +[x0]
- mov x2, x0
- ; gcrRegs +[x2] mov x1, x22
; gcrRegs +[x1]
mov x0, x23
@@ -192,6 +159,18 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
ldr x3, [x3]
blr x3
; gcrRegs -[x1-x2 x22] +[x0]+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x21
+ ; gcrRegs +[x1]
+ mov x0, x25...
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x20 single-def
-; V01 TypeCtx [V01,T01] ( 5, 3.60) long -> x0 single-def
-; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x2 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>+; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x21 single-def
+; V01 TypeCtx [V01,T01] ( 5, 4.50) long -> x20 single-def
+; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]> ; V03 arg1 [V03,T00] ( 4, 7 ) byref -> x19 ld-addr-op single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -19,83 +19,80 @@
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref "field V03._exception (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._tag (fldOffset=0x10)" P-INDEP
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>-; V11 tmp7 [V11,T06] ( 2, 2 ) long -> x0 "argument with side effect"
-; V12 rat0 [V12,T05] ( 3, 2 ) long -> x0 "runtime lookup"
-; V13 rat1 [V13,T04] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V11 tmp7 [V11,T04] ( 2, 2 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
G_M63339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20]+ stp x21, x22, [sp, #0x30] mov fp, sp
str x0, [fp, #0x18]+ mov x20, x0
+ mov x22, x1
+ ; gcrRegs +[x22] mov x19, x2
; byrRegs +[x19]- mov x20, x8
- ; byrRegs +[x20]
- mov x2, x1
- ; gcrRegs +[x2]
- ;; size=28 bbWeight=1 PerfScore 5.00
-G_M63339_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz
- ldr w1, [x19, #0x10]
- cmp w1, #1
- beq G_M63339_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- ; gcrRegs -[x2]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M63339_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M63339_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
- mov x0, x2
- b G_M63339_IG06
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M63339_IG05: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref+ mov x21, x8
+ ; byrRegs +[x21]
+ ;; size=36 bbWeight=1 PerfScore 6.50
+G_M63339_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+ mov x0, x20 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ ldr w0, [x19, #0x10]
+ cmp w0, #1
+ beq G_M63339_IG05
+ ;; size=32 bbWeight=1 PerfScore 7.50
+G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+ ; gcrRegs -[x22]
+ mov x0, x20
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M63339_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref ldr x1, [x19]
; gcrRegs +[x1]- mov x8, x20+ mov x8, x21 ; byrRegs +[x8]
movz x2, #0xD1FFAB1E // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M63339_IG07: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=44 bbWeight=0.50 PerfScore 5.50
+G_M63339_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 br x2
; gcr arg pop 0- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63339_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref
- ; gcrRegs -[x1] +[x2]+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M63339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref
+ ; gcrRegs -[x1] +[x22] ; byrRegs -[x8 x19]- mov x0, x2+ mov x0, x22 ; gcrRegs +[x0]- mov x8, x20+ mov x8, x21 ; byrRegs +[x8]
mov x1, xzr- ldr x2, [x2]
- ; gcrRegs -[x2]+ ldr x2, [x22] ldr x2, [x2, #0x48]
ldr x2, [x2, #0x20]
;; size=24 bbWeight=0.50 PerfScore 5.25-G_M63339_IG09: ; bbWeight=0.50, epilog, nogc, extend+G_M63339_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 br x2
; gcr arg pop 0- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.00 -; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)+; Total bytes of code 168, prolog size 36, PerfScore 28.75, instruction count 42, allocated bytes for code 168 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -106,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 37 (0x00025) Actual length = 148 (0x000094)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,9 +114,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]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
E4 end
E4 end
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 137 | 108 | 4 | 25 | -5,916 | +32 |
benchmarks.run_pgo.linux.arm64.checked.mch | 403 | 331 | 42 | 30 | -21,372 | +344 |
benchmarks.run_tiered.linux.arm64.checked.mch | 251 | 217 | 2 | 32 | -17,412 | +24 |
coreclr_tests.run.linux.arm64.checked.mch | 1 | 1 | 0 | 0 | -48 | +0 |
libraries.crossgen2.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.linux.arm64.checked.mch | 337 | 223 | 28 | 86 | -7,212 | +1,524 |
libraries_tests.run.linux.arm64.Release.mch | 301 | 266 | 4 | 31 | -22,136 | +176 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 197 | 137 | 15 | 45 | -7,372 | +388 |
realworld.run.linux.arm64.checked.mch | 351 | 318 | 13 | 20 | -17,572 | +388 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
1,978 | 1,601 | 108 | 269 | -99,040 | +2,876 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 5,922 | 407 | 5,515 | 9 (0.08%) | 4,678 (42.54%) |
benchmarks.run_pgo.linux.arm64.checked.mch | 17,428 | 13,936 | 3,492 | 2 (0.01%) | 8,251 (31.64%) |
benchmarks.run_tiered.linux.arm64.checked.mch | 15,446 | 13,504 | 1,942 | 7 (0.03%) | 5,194 (24.69%) |
coreclr_tests.run.linux.arm64.checked.mch | 515 | 3 | 512 | 3 (0.05%) | 5,636 (86.09%) |
libraries.crossgen2.linux.arm64.checked.mch | 2,218 | 0 | 2,218 | 11 (0.28%) | 1,317 (33.50%) |
libraries.pmi.linux.arm64.checked.mch | 15,533 | 0 | 15,533 | 0 (0.00%) | 6,676 (29.53%) |
libraries_tests.run.linux.arm64.Release.mch | 10,610 | 9,210 | 1,400 | 1 (0.01%) | 6,349 (36.58%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 5,643 | 0 | 5,643 | 1 (0.01%) | 4,292 (41.54%) |
realworld.run.linux.arm64.checked.mch | 9,359 | 132 | 9,227 | 1 (0.01%) | 4,870 (33.30%) |
smoke_tests.nativeaot.linux.arm64.checked.mch | 8,341 | 4 | 8,337 | 124 (0.88%) | 5,376 (38.09%) |
91,015 | 37,196 | 53,819 | 159 (0.11%) | 52,639 (35.66%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1089056 (overridden on cmd)
Total bytes of diff: 1083172 (overridden on cmd)
Total bytes of delta: -5884 (-0.54 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
20 : 9291.dasm (6.25 % of base)
4 : 11624.dasm (4.55 % of base)
4 : 3241.dasm (2.70 % of base)
4 : 3522.dasm (4.55 % of base)
Top file improvements (bytes):
-328 : 8980.dasm (-23.98 % of base)
-212 : 252.dasm (-30.99 % of base)
-212 : 820.dasm (-33.12 % of base)
-208 : 3808.dasm (-15.76 % of base)
-184 : 743.dasm (-26.14 % of base)
-184 : 256.dasm (-24.34 % of base)
-156 : 5592.dasm (-29.32 % of base)
-144 : 9612.dasm (-15.06 % of base)
-136 : 9324.dasm (-30.63 % of base)
-132 : 5362.dasm (-19.30 % of base)
-128 : 5465.dasm (-27.12 % of base)
-128 : 659.dasm (-18.71 % of base)
-128 : 8551.dasm (-25.81 % of base)
-100 : 218.dasm (-19.84 % of base)
-100 : 10699.dasm (-15.82 % of base)
-100 : 7332.dasm (-20.49 % of base)
-100 : 8253.dasm (-24.04 % of base)
-92 : 8249.dasm (-22.12 % of base)
-80 : 3010.dasm (-15.87 % of base)
-72 : 3164.dasm (-25.00 % of base)
48 total files with Code Size differences (44 improved, 4 regressed), 25 unchanged.
Top method regressions (bytes):
20 (6.25 % of base) : 9291.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
4 (2.70 % of base) : 3241.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
4 (4.55 % of base) : 3522.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (4.55 % of base) : 11624.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
Top method improvements (bytes):
-328 (-23.98 % of base) : 8980.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-15.76 % of base) : 3808.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
-184 (-24.34 % of base) : 256.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 743.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-156 (-29.32 % of base) : 5592.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-144 (-15.06 % of base) : 9612.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
-136 (-30.63 % of base) : 9324.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.30 % of base) : 5362.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-128 (-27.12 % of base) : 5465.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-128 (-25.81 % of base) : 8551.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-128 (-18.71 % of base) : 659.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-15.82 % of base) : 10699.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
-100 (-20.49 % of base) : 7332.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-100 (-24.04 % of base) : 8253.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-100 (-19.84 % of base) : 218.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
-92 (-22.12 % of base) : 8249.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-80 (-15.87 % of base) : 3010.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:ArrayOfUniqueValues[System.__Canon](int):System.__Canon[] (FullOpts)
-72 (-24.00 % of base) : 255.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
20 (6.25 % of base) : 9291.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
4 (4.55 % of base) : 3522.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (4.55 % of base) : 11624.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
4 (2.70 % of base) : 3241.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 9324.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-156 (-29.32 % of base) : 5592.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-128 (-27.12 % of base) : 5465.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-52 (-27.08 % of base) : 7244.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-184 (-26.14 % of base) : 743.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-128 (-25.81 % of base) : 8551.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-72 (-25.00 % of base) : 3164.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-44 (-25.00 % of base) : 8676.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-44 (-25.00 % of base) : 6257.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)
-44 (-24.44 % of base) : 6955.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-44 (-24.44 % of base) : 4822.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 256.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-24.04 % of base) : 8253.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-72 (-24.00 % of base) : 255.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 8980.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-72 (-23.38 % of base) : 8213.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-72 (-23.38 % of base) : 4843.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-24 (-23.08 % of base) : 5302.dasm - System.Threading.Tasks.TaskCache:CreateCacheableTask[System.__Canon](System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2900708 (overridden on cmd)
Total bytes of diff: 2879680 (overridden on cmd)
Total bytes of delta: -21028 (-0.72 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
16 : 21928.dasm (10.53 % of base)
8 : 11204.dasm (6.06 % of base)
8 : 14116.dasm (6.06 % of base)
8 : 8884.dasm (6.06 % of base)
8 : 14739.dasm (6.06 % of base)
8 : 9736.dasm (6.06 % of base)
8 : 9936.dasm (6.06 % of base)
8 : 11020.dasm (6.06 % of base)
8 : 14531.dasm (6.06 % of base)
8 : 18924.dasm (6.06 % of base)
8 : 19304.dasm (6.06 % of base)
8 : 19480.dasm (6.06 % of base)
8 : 21956.dasm (6.06 % of base)
8 : 22795.dasm (6.06 % of base)
8 : 23355.dasm (6.06 % of base)
8 : 23419.dasm (6.06 % of base)
8 : 23500.dasm (6.06 % of base)
8 : 24852.dasm (6.06 % of base)
8 : 25183.dasm (6.06 % of base)
8 : 8180.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 1151.dasm (-43.85 % of base)
-428 : 858.dasm (-42.63 % of base)
-372 : 2415.dasm (-37.96 % of base)
-372 : 867.dasm (-35.36 % of base)
-332 : 25615.dasm (-29.75 % of base)
-316 : 15522.dasm (-37.44 % of base)
-316 : 6086.dasm (-40.10 % of base)
-296 : 12950.dasm (-39.78 % of base)
-268 : 12447.dasm (-40.36 % of base)
-260 : 9668.dasm (-41.94 % of base)
-260 : 19649.dasm (-35.71 % of base)
-260 : 2243.dasm (-28.14 % of base)
-240 : 340.dasm (-32.97 % of base)
-212 : 19708.dasm (-33.33 % of base)
-212 : 22155.dasm (-33.12 % of base)
-204 : 9672.dasm (-35.42 % of base)
-204 : 10308.dasm (-23.50 % of base)
-204 : 15471.dasm (-32.28 % of base)
-204 : 723.dasm (-30.18 % of base)
-204 : 13130.dasm (-30.00 % of base)
70 total files with Code Size differences (50 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
16 (10.53 % of base) : 21928.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 11204.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14116.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14739.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9736.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9936.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 11020.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14531.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 18924.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19480.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21956.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22795.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23355.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23419.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23500.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 24852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8180.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-428 (-42.63 % of base) : 858.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 1151.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 867.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.96 % of base) : 2415.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-332 (-29.75 % of base) : 25615.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
-316 (-40.10 % of base) : 6086.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 15522.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 12950.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-268 (-40.36 % of base) : 12447.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-260 (-41.94 % of base) : 9668.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-260 (-35.71 % of base) : 19649.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-28.14 % of base) : 2243.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 340.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.33 % of base) : 19708.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 22155.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-32.28 % of base) : 15471.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 13130.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-23.50 % of base) : 10308.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
-204 (-35.42 % of base) : 9672.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-30.18 % of base) : 723.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
Top method regressions (percentages):
16 (10.53 % of base) : 21928.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 11204.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14116.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14739.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9736.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9936.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 11020.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14531.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 18924.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19480.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21956.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22795.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23355.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23419.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23500.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 24852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8180.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-428 (-43.85 % of base) : 1151.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 858.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-260 (-41.94 % of base) : 9668.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-92 (-41.82 % of base) : 14876.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-148 (-41.57 % of base) : 6218.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-41.07 % of base) : 15340.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 24206.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-268 (-40.36 % of base) : 12447.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-316 (-40.10 % of base) : 6086.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 12950.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-92 (-38.33 % of base) : 10834.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-92 (-38.33 % of base) : 7341.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
-372 (-37.96 % of base) : 2415.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-37.76 % of base) : 5088.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 15522.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-148 (-37.00 % of base) : 2499.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 6085.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 19106.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 24739.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Instrumented Tier0)
-92 (-36.51 % of base) : 5090.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2340380 (overridden on cmd)
Total bytes of diff: 2322992 (overridden on cmd)
Total bytes of delta: -17388 (-0.74 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
16 : 13538.dasm (10.53 % of base)
8 : 1425.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 776.dasm (-42.63 % of base)
-428 : 2281.dasm (-45.34 % of base)
-372 : 785.dasm (-35.36 % of base)
-372 : 11153.dasm (-32.98 % of base)
-372 : 2164.dasm (-37.96 % of base)
-332 : 19224.dasm (-29.75 % of base)
-316 : 3337.dasm (-37.44 % of base)
-316 : 9692.dasm (-40.10 % of base)
-296 : 9469.dasm (-39.78 % of base)
-260 : 12465.dasm (-40.37 % of base)
-260 : 16171.dasm (-37.36 % of base)
-260 : 2009.dasm (-27.66 % of base)
-260 : 11279.dasm (-40.88 % of base)
-240 : 328.dasm (-32.97 % of base)
-212 : 5364.dasm (-33.12 % of base)
-204 : 15933.dasm (-32.28 % of base)
-204 : 9655.dasm (-30.00 % of base)
-204 : 19008.dasm (-25.76 % of base)
-204 : 668.dasm (-30.18 % of base)
-204 : 11283.dasm (-34.46 % of base)
51 total files with Code Size differences (49 improved, 2 regressed), 24 unchanged.
Top method regressions (bytes):
16 (10.53 % of base) : 13538.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 1425.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-428 (-42.63 % of base) : 776.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-45.34 % of base) : 2281.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-32.98 % of base) : 11153.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-372 (-35.36 % of base) : 785.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.96 % of base) : 2164.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-332 (-29.75 % of base) : 19224.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
-316 (-40.10 % of base) : 9692.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 3337.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 9469.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-40.88 % of base) : 11279.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 12465.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-37.36 % of base) : 16171.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 2009.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 328.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 5364.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-25.76 % of base) : 19008.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
-204 (-32.28 % of base) : 15933.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 9655.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-34.46 % of base) : 11283.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-30.18 % of base) : 668.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
Top method regressions (percentages):
16 (10.53 % of base) : 13538.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 1425.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-428 (-45.34 % of base) : 2281.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 776.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-41.82 % of base) : 15390.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-148 (-41.57 % of base) : 14892.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-41.07 % of base) : 15815.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 21128.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.88 % of base) : 11279.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 12465.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-316 (-40.10 % of base) : 9692.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 9469.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-92 (-38.33 % of base) : 13395.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-92 (-38.33 % of base) : 11120.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
-372 (-37.96 % of base) : 2164.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-37.76 % of base) : 8793.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 3337.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-260 (-37.36 % of base) : 16171.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-148 (-37.00 % of base) : 2265.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 9691.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 12579.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 8795.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 164096 (overridden on cmd)
Total bytes of diff: 164048 (overridden on cmd)
Total bytes of delta: -48 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-48 : 321.dasm (-9.84 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-48 (-9.84 % of base) : 321.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
Top method improvements (percentages):
-48 (-9.84 % of base) : 321.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1285304 (overridden on cmd)
Total bytes of diff: 1279616 (overridden on cmd)
Total bytes of delta: -5688 (-0.44 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
804 : 5577.dasm (88.16 % of base)
96 : 14793.dasm (23.53 % of base)
84 : 14791.dasm (23.60 % of base)
56 : 14789.dasm (17.95 % of base)
44 : 14787.dasm (16.92 % of base)
28 : 13129.dasm (18.42 % of base)
28 : 12977.dasm (22.58 % of base)
28 : 13130.dasm (18.42 % of base)
28 : 13138.dasm (18.42 % of base)
28 : 13139.dasm (18.42 % of base)
24 : 17396.dasm (23.08 % of base)
24 : 17398.dasm (23.08 % of base)
20 : 17384.dasm (16.13 % of base)
20 : 17386.dasm (16.13 % of base)
20 : 9423.dasm (6.02 % of base)
20 : 9425.dasm (4.50 % of base)
16 : 13128.dasm (9.76 % of base)
16 : 13135.dasm (9.76 % of base)
16 : 13136.dasm (9.76 % of base)
16 : 13140.dasm (9.76 % of base)
Top file improvements (bytes):
-184 : 12781.dasm (-31.72 % of base)
-156 : 18102.dasm (-30.47 % of base)
-156 : 12750.dasm (-21.91 % of base)
-136 : 12840.dasm (-19.65 % of base)
-128 : 12842.dasm (-22.70 % of base)
-124 : 14688.dasm (-21.23 % of base)
-104 : 12985.dasm (-25.74 % of base)
-96 : 12795.dasm (-19.35 % of base)
-76 : 12772.dasm (-12.03 % of base)
-76 : 12802.dasm (-22.62 % of base)
-76 : 12992.dasm (-18.45 % of base)
-76 : 12996.dasm (-18.45 % of base)
-72 : 12788.dasm (-26.09 % of base)
-72 : 14153.dasm (-18.56 % of base)
-72 : 17125.dasm (-23.08 % of base)
-72 : 17388.dasm (-26.09 % of base)
-72 : 23826.dasm (-10.98 % of base)
-72 : 13523.dasm (-30.51 % of base)
-72 : 13525.dasm (-30.51 % of base)
-72 : 13527.dasm (-30.51 % of base)
75 total files with Code Size differences (53 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
804 (88.16 % of base) : 5577.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
96 (23.53 % of base) : 14793.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
84 (23.60 % of base) : 14791.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
56 (17.95 % of base) : 14789.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
44 (16.92 % of base) : 14787.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
28 (22.58 % of base) : 12977.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
28 (18.42 % of base) : 13129.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
28 (18.42 % of base) : 13130.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
28 (18.42 % of base) : 13138.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
28 (18.42 % of base) : 13139.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
24 (23.08 % of base) : 17396.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
24 (23.08 % of base) : 17398.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
20 (16.13 % of base) : 17386.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
20 (16.13 % of base) : 17384.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
20 (4.50 % of base) : 9425.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
20 (6.02 % of base) : 9423.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
16 (9.76 % of base) : 13128.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
16 (9.76 % of base) : 13131.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
16 (9.76 % of base) : 13127.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
16 (9.76 % of base) : 13140.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
Top method improvements (bytes):
-184 (-31.72 % of base) : 12781.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
-156 (-30.47 % of base) : 18102.dasm - Microsoft.CodeAnalysis.GreenNode:CreateList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.GreenNode (FullOpts)
-156 (-21.91 % of base) : 12750.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-136 (-19.65 % of base) : 12840.dasm - Roslyn.Utilities.EnumerableExtensions:ToMultiDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
-128 (-22.70 % of base) : 12842.dasm - Roslyn.Utilities.EnumerableExtensions:AsSingleton[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-124 (-21.23 % of base) : 14688.dasm - Microsoft.CodeAnalysis.DictionaryExtensions:ToImmutableSegmentedDictionaryAndFree[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
-104 (-25.74 % of base) : 12985.dasm - Roslyn.Utilities.IReadOnlyListExtensions:Contains[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-96 (-19.35 % of base) : 12795.dasm - Roslyn.Utilities.EnumerableExtensions:EnumeratingIndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
-76 (-22.62 % of base) : 12802.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
-76 (-12.03 % of base) : 12772.dasm - Roslyn.Utilities.EnumerableExtensions:SelectManyAsArray[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]] (FullOpts)
-76 (-18.45 % of base) : 12992.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-76 (-18.45 % of base) : 12996.dasm - Roslyn.Utilities.ISetExtensions:RemoveAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-72 (-18.56 % of base) : 14153.dasm - Microsoft.Cci.IteratorHelper:EnumerableCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):uint (FullOpts)
-72 (-20.00 % of base) : 14149.dasm - Microsoft.Cci.IteratorHelper:EnumerableIsNotEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-72 (-10.98 % of base) : 23826.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:AddRange[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
-72 (-23.08 % of base) : 17125.dasm - Microsoft.CodeAnalysis.IncrementalGeneratorInitializationContext:RegisterSourceOutput[System.__Canon](Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon],System.Action`2[Microsoft.CodeAnalysis.SourceProductionContext,System.__Canon],int,System.String):this (FullOpts)
-72 (-26.09 % of base) : 17388.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
-72 (-26.09 % of base) : 17390.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`3[System.__Canon,System.Threading.CancellationToken,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
-72 (-26.09 % of base) : 12788.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
-72 (-30.51 % of base) : 13523.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
804 (88.16 % of base) : 5577.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
84 (23.60 % of base) : 14791.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
96 (23.53 % of base) : 14793.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
24 (23.08 % of base) : 17396.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
24 (23.08 % of base) : 17398.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
28 (22.58 % of base) : 12977.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
28 (18.42 % of base) : 13129.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
28 (18.42 % of base) : 13130.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
28 (18.42 % of base) : 13138.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
28 (18.42 % of base) : 13139.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
56 (17.95 % of base) : 14789.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
44 (16.92 % of base) : 14787.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
20 (16.13 % of base) : 17386.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
20 (16.13 % of base) : 17384.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
16 (9.76 % of base) : 13128.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
16 (9.76 % of base) : 13131.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
16 (9.76 % of base) : 13127.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
16 (9.76 % of base) : 13140.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
16 (9.76 % of base) : 13136.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
16 (9.76 % of base) : 13135.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[ubyte](System.Func`3[System.__Canon,ubyte,ubyte],ubyte):ubyte:this (FullOpts)
Top method improvements (percentages):
-56 (-32.56 % of base) : 12832.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
-56 (-32.56 % of base) : 12910.dasm - Roslyn.Utilities.ImmutableListExtensions:ToImmutableListOrEmpty[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
-56 (-32.56 % of base) : 12912.dasm - Roslyn.Utilities.ImmutableListExtensions:ToImmutableListOrEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
-184 (-31.72 % of base) : 12781.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
-72 (-30.51 % of base) : 13523.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-72 (-30.51 % of base) : 13525.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlySet[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon]):System.Collections.Generic.ISet`1[System.__Canon] (FullOpts)
-72 (-30.51 % of base) : 13527.dasm - Roslyn.Utilities.SpecializedCollections:StronglyTypedReadOnlySet[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon]):System.Collections.Generic.IReadOnlySet`1[System.__Canon] (FullOpts)
-156 (-30.47 % of base) : 18102.dasm - Microsoft.CodeAnalysis.GreenNode:CreateList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.GreenNode (FullOpts)
-52 (-28.89 % of base) : 12834.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
-24 (-27.27 % of base) : 13521.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-24 (-27.27 % of base) : 13507.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-44 (-26.83 % of base) : 12762.dasm - Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-44 (-26.19 % of base) : 12734.dasm - Roslyn.Utilities.EnumerableExtensions:ToCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IReadOnlyCollection`1[System.__Canon] (FullOpts)
-72 (-26.09 % of base) : 17388.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
-72 (-26.09 % of base) : 17390.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`3[System.__Canon,System.Threading.CancellationToken,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
-72 (-26.09 % of base) : 12788.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
-24 (-26.09 % of base) : 12860.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
-24 (-26.09 % of base) : 13514.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerator[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-104 (-25.74 % of base) : 12985.dasm - Roslyn.Utilities.IReadOnlyListExtensions:Contains[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-52 (-25.49 % of base) : 12817.dasm - Roslyn.Utilities.EnumerableExtensions:OrderByDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Comparison`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2135476 (overridden on cmd)
Total bytes of diff: 2113516 (overridden on cmd)
Total bytes of delta: -21960 (-1.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
132 : 13264.dasm (94.29 % of base)
36 : 17461.dasm (69.23 % of base)
4 : 4214.dasm (1.64 % of base)
4 : 4883.dasm (1.64 % of base)
Top file improvements (bytes):
-428 : 35.dasm (-41.96 % of base)
-428 : 43.dasm (-43.85 % of base)
-372 : 148.dasm (-37.35 % of base)
-372 : 1241.dasm (-36.47 % of base)
-316 : 6678.dasm (-40.10 % of base)
-296 : 1963.dasm (-39.78 % of base)
-260 : 1271.dasm (-28.14 % of base)
-260 : 11793.dasm (-43.92 % of base)
-260 : 155.dasm (-40.37 % of base)
-260 : 2539.dasm (-43.92 % of base)
-260 : 774.dasm (-40.37 % of base)
-260 : 8477.dasm (-34.76 % of base)
-260 : 8128.dasm (-37.36 % of base)
-216 : 11958.dasm (-33.54 % of base)
-212 : 12829.dasm (-33.12 % of base)
-212 : 14325.dasm (-33.12 % of base)
-212 : 17801.dasm (-33.12 % of base)
-212 : 4738.dasm (-33.12 % of base)
-212 : 13201.dasm (-33.12 % of base)
-212 : 6186.dasm (-33.12 % of base)
53 total files with Code Size differences (49 improved, 4 regressed), 24 unchanged.
Top method regressions (bytes):
132 (94.29 % of base) : 13264.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Equals(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier0)
36 (69.23 % of base) : 17461.dasm - Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)
4 (1.64 % of base) : 4883.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
4 (1.64 % of base) : 4214.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
Top method improvements (bytes):
-428 (-41.96 % of base) : 35.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 43.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-36.47 % of base) : 1241.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 148.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-40.10 % of base) : 6678.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 1963.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 774.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 155.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-37.36 % of base) : 8128.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-34.76 % of base) : 8477.dasm - System.Linq.Enumerable:ElementAt[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier0)
-260 (-28.14 % of base) : 1271.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-260 (-43.92 % of base) : 2539.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-260 (-43.92 % of base) : 11793.dasm - Xunit.Assert:DoesNotContain[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-216 (-33.54 % of base) : 11958.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 12829.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 14325.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 17801.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 4738.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 13201.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 6186.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
Top method regressions (percentages):
132 (94.29 % of base) : 13264.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Equals(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier0)
36 (69.23 % of base) : 17461.dasm - Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)
4 (1.64 % of base) : 4883.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
4 (1.64 % of base) : 4214.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
Top method improvements (percentages):
-260 (-43.92 % of base) : 2539.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-260 (-43.92 % of base) : 11793.dasm - Xunit.Assert:DoesNotContain[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-428 (-43.85 % of base) : 43.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 35.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 774.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 155.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-316 (-40.10 % of base) : 6678.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 1963.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-148 (-39.78 % of base) : 19.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-148 (-39.36 % of base) : 11708.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Predicate`1[System.__Canon]):System.__Canon (Tier0)
-92 (-38.33 % of base) : 17541.dasm - Moq.Mock:Of[System.__Canon](System.Linq.Expressions.Expression`1[System.__Canon],int):System.__Canon (Tier0)
-148 (-37.76 % of base) : 9265.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-37.70 % of base) : 2796.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon) (Tier0)
-92 (-37.70 % of base) : 5299.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-92 (-37.70 % of base) : 8164.dasm - Xunit.Assert:NotEqual[System.__Canon](System.__Canon,System.__Canon) (Tier0)
-92 (-37.70 % of base) : 7494.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
-92 (-37.70 % of base) : 4732.dasm - Xunit.Sdk.CollectionExtensions:CastOrToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-92 (-37.70 % of base) : 1331.dasm - Xunit.Sdk.CollectionExtensions:CastOrToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-260 (-37.36 % of base) : 8128.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-372 (-37.35 % of base) : 148.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1090520 (overridden on cmd)
Total bytes of diff: 1083536 (overridden on cmd)
Total bytes of delta: -6984 (-0.64 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
68 : 6076.dasm (8.99 % of base)
64 : 4331.dasm (5.39 % of base)
48 : 6628.dasm (16.67 % of base)
28 : 12633.dasm (9.21 % of base)
28 : 10438.dasm (7.87 % of base)
24 : 6185.dasm (31.58 % of base)
24 : 2790.dasm (6.59 % of base)
24 : 8039.dasm (23.08 % of base)
24 : 10425.dasm (6.25 % of base)
20 : 8521.dasm (16.13 % of base)
20 : 69.dasm (6.25 % of base)
4 : 8518.dasm (3.03 % of base)
4 : 8433.dasm (3.45 % of base)
4 : 8713.dasm (1.89 % of base)
4 : 4200.dasm (3.45 % of base)
Top file improvements (bytes):
-328 : 2953.dasm (-23.98 % of base)
-328 : 1002.dasm (-22.47 % of base)
-212 : 10.dasm (-30.99 % of base)
-212 : 13.dasm (-33.12 % of base)
-212 : 3313.dasm (-12.62 % of base)
-200 : 2960.dasm (-19.69 % of base)
-184 : 67.dasm (-26.14 % of base)
-184 : 479.dasm (-24.34 % of base)
-176 : 3206.dasm (-27.85 % of base)
-160 : 759.dasm (-17.62 % of base)
-156 : 4645.dasm (-21.91 % of base)
-136 : 2194.dasm (-30.63 % of base)
-136 : 6181.dasm (-18.68 % of base)
-132 : 510.dasm (-19.76 % of base)
-128 : 7873.dasm (-29.91 % of base)
-128 : 860.dasm (-27.12 % of base)
-128 : 492.dasm (-18.71 % of base)
-100 : 632.dasm (-21.93 % of base)
-100 : 2100.dasm (-24.04 % of base)
-96 : 3338.dasm (-12.83 % of base)
62 total files with Code Size differences (47 improved, 15 regressed), 23 unchanged.
Top method regressions (bytes):
68 (8.99 % of base) : 6076.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
64 (5.39 % of base) : 4331.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
48 (16.67 % of base) : 6628.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
28 (7.87 % of base) : 10438.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
28 (9.21 % of base) : 12633.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
24 (6.25 % of base) : 10425.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
24 (23.08 % of base) : 8039.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
24 (31.58 % of base) : 6185.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
24 (6.59 % of base) : 2790.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
20 (16.13 % of base) : 8521.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
4 (1.89 % of base) : 8713.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.03 % of base) : 8518.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
4 (3.45 % of base) : 4200.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.45 % of base) : 8433.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-328 (-22.47 % of base) : 1002.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 2953.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-212 (-12.62 % of base) : 3313.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-200 (-19.69 % of base) : 2960.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 479.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-176 (-27.85 % of base) : 3206.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-160 (-17.62 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-156 (-21.91 % of base) : 4645.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-136 (-18.68 % of base) : 6181.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
-136 (-30.63 % of base) : 2194.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.76 % of base) : 510.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
-128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-128 (-18.71 % of base) : 492.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-128 (-29.91 % of base) : 7873.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-100 (-24.04 % of base) : 2100.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-100 (-21.93 % of base) : 632.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-96 (-12.83 % of base) : 3338.dasm - Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:UpdateStates[System.ValueTuple`2[System.__Canon,ubyte]](System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,ubyte],System.__Canon],System.ValueTuple`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:this (FullOpts)
Top method regressions (percentages):
24 (31.58 % of base) : 6185.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
24 (23.08 % of base) : 8039.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
48 (16.67 % of base) : 6628.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
20 (16.13 % of base) : 8521.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
28 (9.21 % of base) : 12633.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
68 (8.99 % of base) : 6076.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
28 (7.87 % of base) : 10438.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
24 (6.59 % of base) : 2790.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
24 (6.25 % of base) : 10425.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
64 (5.39 % of base) : 4331.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
4 (3.45 % of base) : 4200.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.45 % of base) : 8433.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.03 % of base) : 8518.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
4 (1.89 % of base) : 8713.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-24 (-31.58 % of base) : 2119.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 2194.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-72 (-30.51 % of base) : 5726.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-128 (-29.91 % of base) : 7873.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-72 (-28.12 % of base) : 8447.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (FullOpts)
-176 (-27.85 % of base) : 3206.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-44 (-26.19 % of base) : 2234.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-72 (-25.71 % of base) : 3064.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
-72 (-25.00 % of base) : 50.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-44 (-24.44 % of base) : 3042.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
-44 (-24.44 % of base) : 599.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 479.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-52 (-24.07 % of base) : 4380.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-100 (-24.04 % of base) : 2100.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-24 (-24.00 % of base) : 2268.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
-72 (-24.00 % of base) : 12.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1695560 (overridden on cmd)
Total bytes of diff: 1678376 (overridden on cmd)
Total bytes of delta: -17184 (-1.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
124 : 7457.dasm (12.55 % of base)
48 : 7110.dasm (10.62 % of base)
48 : 7121.dasm (10.62 % of base)
48 : 7131.dasm (10.81 % of base)
48 : 7134.dasm (10.62 % of base)
20 : 9655.dasm (13.51 % of base)
16 : 7058.dasm (8.51 % of base)
8 : 10918.dasm (3.03 % of base)
8 : 2662.dasm (4.26 % of base)
8 : 11191.dasm (5.88 % of base)
4 : 12455.dasm (5.56 % of base)
4 : 2897.dasm (1.59 % of base)
4 : 6062.dasm (0.98 % of base)
Top file improvements (bytes):
-328 : 10308.dasm (-29.29 % of base)
-328 : 3835.dasm (-24.33 % of base)
-228 : 9591.dasm (-28.22 % of base)
-212 : 252.dasm (-30.99 % of base)
-212 : 820.dasm (-33.12 % of base)
-208 : 7293.dasm (-23.01 % of base)
-208 : 8272.dasm (-23.42 % of base)
-200 : 6381.dasm (-11.79 % of base)
-188 : 13212.dasm (-23.86 % of base)
-184 : 256.dasm (-24.34 % of base)
-184 : 744.dasm (-26.14 % of base)
-172 : 10307.dasm (-18.53 % of base)
-172 : 8979.dasm (-22.63 % of base)
-164 : 6179.dasm (-22.04 % of base)
-160 : 14567.dasm (-17.62 % of base)
-152 : 10309.dasm (-14.02 % of base)
-144 : 7253.dasm (-20.81 % of base)
-144 : 8127.dasm (-24.32 % of base)
-144 : 8946.dasm (-20.11 % of base)
-144 : 9139.dasm (-18.00 % of base)
69 total files with Code Size differences (56 improved, 13 regressed), 20 unchanged.
Top method regressions (bytes):
124 (12.55 % of base) : 7457.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
48 (10.81 % of base) : 7131.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 7134.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 7121.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 7110.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
20 (13.51 % of base) : 9655.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
16 (8.51 % of base) : 7058.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
8 (3.03 % of base) : 10918.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
8 (4.26 % of base) : 2662.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (5.88 % of base) : 11191.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (0.98 % of base) : 6062.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (1.59 % of base) : 2897.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (5.56 % of base) : 12455.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
Top method improvements (bytes):
-328 (-29.29 % of base) : 10308.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-328 (-24.33 % of base) : 3835.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-228 (-28.22 % of base) : 9591.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-23.01 % of base) : 7293.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-208 (-23.42 % of base) : 8272.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
-200 (-11.79 % of base) : 6381.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-188 (-23.86 % of base) : 13212.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-24.34 % of base) : 256.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 744.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-172 (-22.63 % of base) : 8979.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-172 (-18.53 % of base) : 10307.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-164 (-22.04 % of base) : 6179.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-160 (-17.62 % of base) : 14567.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-152 (-14.02 % of base) : 10309.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-144 (-18.00 % of base) : 9139.dasm - FSharp.Compiler.PatternMatchCompilation:chooseSimultaneousEdgeSet[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-144 (-24.32 % of base) : 8127.dasm - Internal.Utilities.Library.List:loop@386-20[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-144 (-20.81 % of base) : 7253.dasm - Microsoft.FSharp.Primitives.Basics.List:map2[System.__Canon,ubyte,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[ubyte]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-144 (-20.11 % of base) : 8946.dasm - Microsoft.FSharp.Primitives.Basics.List:mapi2[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
20 (13.51 % of base) : 9655.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
124 (12.55 % of base) : 7457.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
48 (10.81 % of base) : 7131.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 7134.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 7121.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 7110.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
16 (8.51 % of base) : 7058.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
8 (5.88 % of base) : 11191.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (5.56 % of base) : 12455.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
8 (4.26 % of base) : 2662.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (3.03 % of base) : 10918.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
4 (1.59 % of base) : 2897.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (0.98 % of base) : 6062.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (percentages):
-60 (-33.33 % of base) : 9225.dasm - FSharp.Compiler.NameResolution:CollectResults2[System.__Canon,System.__Canon](FSharp.Compiler.NameResolution+ResultCollectionSettings,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]] (FullOpts)
-212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-60 (-32.61 % of base) : 10922.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 11419.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-56 (-30.43 % of base) : 8211.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-100 (-29.41 % of base) : 6080.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-100 (-29.41 % of base) : 6222.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-80 (-29.41 % of base) : 6890.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
-80 (-29.41 % of base) : 10513.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-328 (-29.29 % of base) : 10308.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-100 (-28.41 % of base) : 9687.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-228 (-28.22 % of base) : 9591.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-80 (-28.17 % of base) : 6072.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 6478.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 10649.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:toSeq[System.__Canon,System.__Canon](Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-28.12 % of base) : 10131.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:toSeq[System.__Canon](Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-72 (-28.12 % of base) : 5173.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-28.12 % of base) : 10915.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIEnumerator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-72 (-28.12 % of base) : 6220.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
Diffs are based on 79,033 contexts (35,101 MinOpts, 43,932 FullOpts).
MISSED contexts: base: 44 (0.04%), diff: 37,673 (31.32%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.osx.arm64.checked.mch | 1,030,644 | -6,084 |
benchmarks.run_pgo.osx.arm64.checked.mch | 2,510,584 | -18,724 |
benchmarks.run_tiered.osx.arm64.checked.mch | 2,279,232 | -17,048 |
coreclr_tests.run.osx.arm64.checked.mch | 312,480 | -176 |
libraries.pmi.osx.arm64.checked.mch | 1,249,200 | -4,376 |
libraries_tests.run.osx.arm64.Release.mch | 1,052,488 | -10,708 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 1,037,508 | -6,992 |
realworld.run.osx.arm64.checked.mch | 1,692,100 | -17,336 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.osx.arm64.checked.mch | 2,244,624 | -17,056 |
benchmarks.run_tiered.osx.arm64.checked.mch | 2,045,300 | -16,120 |
coreclr_tests.run.osx.arm64.checked.mch | 286,116 | -176 |
libraries_tests.run.osx.arm64.Release.mch | 981,904 | -10,476 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.osx.arm64.checked.mch | 1,030,220 | -6,084 |
benchmarks.run_pgo.osx.arm64.checked.mch | 265,960 | -1,668 |
benchmarks.run_tiered.osx.arm64.checked.mch | 233,932 | -928 |
libraries.pmi.osx.arm64.checked.mch | 1,249,200 | -4,376 |
libraries_tests.run.osx.arm64.Release.mch | 70,584 | -232 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 1,037,508 | -6,992 |
realworld.run.osx.arm64.checked.mch | 1,692,000 | -17,336 |
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect"
+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
@@ -33,22 +28,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41289_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M41289_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]
@@ -59,27 +44,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M41289_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M41289_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M41289_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY add x1, fp, #16 // [V01 arg0]
mov x2, x20
; gcrRegs +[x2]
@@ -89,14 +59,14 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20] +[x0]- ;; size=28 bbWeight=1 PerfScore 6.50
-G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=96 bbWeight=1 PerfScore 19.00
+G_M41289_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 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)+ Function Length : 33 (0x00021) Actual length = 132 (0x000084) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,22 +7,17 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
mov w21, w2
;; size=32 bbWeight=1 PerfScore 6.00-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M26687_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
mov w2, w21
@@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x1]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M26687_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M26687_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=88 bbWeight=1 PerfScore 17.50
+G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,68 +7,39 @@
; No matching PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel>
-; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> x19 single-def+; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel>
+; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03,T05] ( 3, 4 ) long -> x21 "spilling helperCall"+; V03 tmp1 [V03,T03] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp3 [V05,T08] ( 2, 4 ) long -> x22 "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V07 rat0 [V07,T01] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-; V08 rat1 [V08,T06] ( 3, 4 ) long -> x22 "runtime lookup"
-; V09 rat2 [V09,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V10 rat3 [V10,T04] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"+; V05 tmp3 [V05,T04] ( 2, 4 ) long -> x19 "argument with side effect"
+; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M14728_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, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x20, x0
; gcrRegs +[x20]
mov x19, x1
;; size=28 bbWeight=1 PerfScore 5.50-G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x21, [x0, #0x10]
- cbz x21, G_M14728_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M14728_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M14728_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M14728_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x21, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M14728_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M14728_IG08
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M14728_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x22, [x0, #0x18]
- cbz x22, G_M14728_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M14728_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M14728_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M14728_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x22, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY
+ mov x19, x0 mov x0, x20
; gcrRegs +[x0]
mov x1, x21
@@ -81,19 +52,19 @@ G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x20]
mov x1, x0
; gcrRegs +[x1]- mov x0, x22+ mov x0, x19 ; gcrRegs -[x0]- bl CORINFO_HELP_ISINSTANCEOFINTERFACE+ bl CORINFO_HELP_INITINSTCLASS ; gcrRegs -[x1] +[x0]- ;; size=44 bbWeight=1 PerfScore 9.00
-G_M14728_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40+ ;; size=92 bbWeight=1 PerfScore 16.00
+G_M14728_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30 ret lr- ;; size=16 bbWeight=1 PerfScore 4.00+ ;; size=16 bbWeight=1 PerfScore 5.00 -; Total bytes of code 180, prolog size 20, PerfScore 39.60, instruction count 45, allocated bytes for code 180 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 26.50, instruction count 34, allocated bytes for code 136 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -104,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -112,10 +83,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]!
- E4 end+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
E4 end
@@ -10,7 +10,7 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Newtonsoft.Json.Linq.JContainer>
; V01 arg1 [V01,T00] ( 6, 4.50) 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,T01] ( 2, 2 ) ref -> x1 class-hnd "spilling QMark2" <<unknown class>>+; V03 tmp1 [V03,T01] ( 3, 2.50) ref -> x1 class-hnd "spilling QMark2" <<unknown class>> ;
; Lcl frame size = 8
@@ -27,56 +27,61 @@ G_M29722_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_ISINSTANCEOFINTERFACE+ bl CORINFO_HELP_INITINSTCLASS ; gcrRegs -[x1] +[x0]- cbz x0, G_M29722_IG05+ cbz x0, G_M29722_IG07 ;; size=24 bbWeight=1 PerfScore 4.00
G_M29722_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]+ cbz x1, G_M29722_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M29722_IG04: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz ldr x1, [x1]
; gcrRegs -[x1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x1, x0- beq G_M29722_IG05+ beq G_M29722_IG07
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M29722_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_ISINSTANCEOFCLASS+ bl CORINFO_HELP_ISINSTANCEOFARRAY ; gcrRegs -[x1] +[x0]- cbnz x0, G_M29722_IG05+ cbnz x0, G_M29722_IG07 mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_ISINSTANCEOFARRAY+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[x1 x19] +[x0]
cmp x0, #0
cset x0, eq
; gcrRegs -[x0]- ;; size=80 bbWeight=0.50 PerfScore 7.25
-G_M29722_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M29722_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25+ ;; size=52 bbWeight=0.50 PerfScore 4.00 G_M29722_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00+G_M29722_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M29722_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 -; Total bytes of code 148, prolog size 12, PerfScore 18.50, instruction count 37, allocated bytes for code 148 (MethodHash=14138be5) for method Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)+; Total bytes of code 152, prolog size 12, PerfScore 17.50, instruction count 38, allocated bytes for code 152 (MethodHash=14138be5) for method Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts) ; ============================================================
Unwind Info:
@@ -87,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 37 (0x00025) Actual length = 148 (0x000094)+ Function Length : 38 (0x00026) Actual length = 152 (0x000098) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -32,7 +32,7 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_CHKCASTINTERFACE+ bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x19
@@ -40,8 +40,9 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #1 LSL #32+ ldr wzr, [x0] ldr x2, [x11]- ;; size=40 bbWeight=0.50 PerfScore 4.00+ ;; size=44 bbWeight=0.50 PerfScore 5.50 G_M31221_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -58,7 +59,7 @@ G_M31221_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +70,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[System.ValueTuple
2[System.Canon,System.Canon]]):System.ValueTuple`2[System.Canon,System.__Canon]@@ -8,33 +8,26 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> ; V02 loc0 [V02 ] ( 1, 1 ) struct (128) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect"
-; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect"
-; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect"
-; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup"
-; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect"
+; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect"
+; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 408
@@ -60,23 +53,20 @@ G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
;; size=76 bbWeight=1 PerfScore 15.00-G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M13440_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M13440_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M13440_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M13440_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY add x1, fp, #0xD1FFAB1E // [V02 loc0]+ mov x0, x21 mov w2, #8
movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon]](byref,int):System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]
movk x3, #0xD1FFAB1E LSL #16
@@ -88,29 +78,13 @@ G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0]
str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8]
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]- ldr x0, [x19, #0x38]
- ; byrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M13440_IG08
- ;; size=60 bbWeight=1 PerfScore 18.00
-G_M13440_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x0, #0x18]
- cbz x21, G_M13440_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13440_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M13440_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13440_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x21, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x1, x21+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
mov x2, x20
; gcrRegs +[x2]
@@ -120,7 +94,12 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20]- mov x1, x21+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray():System.ValueTuple`2[System.__Canon,System.__Canon][]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -128,27 +107,32 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- mov x19, x0
- ; gcrRegs +[x19]
- mov x1, x21
- add x0, fp, #24 // [V03 loc1]+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov x0, x19 ; gcrRegs -[x0]+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:Dispose():this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2- mov x0, x19+ mov x0, x20 ; gcrRegs +[x0]- ;; size=96 bbWeight=1 PerfScore 21.00
-G_M13440_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=248 bbWeight=1 PerfScore 47.50
+G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0xD1FFAB1E]
ldp x19, x20, [sp, #0xD1FFAB1E]
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts) ; ============================================================
Unwind Info:
@@ -159,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 80 (0x00050) Actual length = 320 (0x000140)+ Function Length : 85 (0x00055) Actual length = 340 (0x000154) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M34046_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M34046_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov x1, xzr
mov w2, wzr
@@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=32 bbWeight=1 PerfScore 8.50
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 14.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -65,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x30] // [V00 TypeCtx]
str x1, [fp, #0x28] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M56297_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V04 tmp1]
- b G_M56297_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V04 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x2, fp, #32 // [V02 loc0]
ldr x0, [fp, #0x18] // [V04 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)+ Function Length : 21 (0x00015) Actual length = 84 (0x000054) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T04] ( 3, 2.80) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T02] ( 5, 3.96) long -> x1 single-def
-; V02 arg1 [V02,T03] ( 4, 3.80) byref -> x19 single-def
-; V03 loc0 [V03,T01] ( 7, 6.20) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V00 this [V00,T04] ( 3, 2.80) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4.60) long -> x19 single-def
+; V02 arg1 [V02,T03] ( 4, 3.80) byref -> x20 single-def
+; V03 loc0 [V03,T02] ( 7, 6.20) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T00] ( 4, 6.40) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T01] ( 4, 6.40) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 3.20) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.80 PerfScore 5.60
-G_M58319_IG04: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M58319_IG05: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.16 PerfScore 0.48
-G_M58319_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.80 PerfScore 5.60
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.80 PerfScore 10.40
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 26.82, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 24.40, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.11) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.13) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.11) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.11) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.22) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.11) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.44) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 0.88) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 0.88) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 0.44) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 0.62) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.11, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.11, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.11 PerfScore 0.77
-G_M58319_IG04: ; bbWeight=0.09, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.09 PerfScore 0.09
-G_M58319_IG05: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.02 PerfScore 0.07
-G_M58319_IG06: ; bbWeight=0.11, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.11 PerfScore 0.77
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.11 PerfScore 1.43
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 16.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 15.43, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
1[System.DateTimeOffset]]():System.Nullable
1System.DateTimeOffset@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_BOX+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]
str x0, [fp, #0x10] // [V04 tmp2]- ldr x2, [fp, #0x10] // [V04 tmp2]
- ; gcrRegs +[x2]
- ldr x0, [fp, #0x38] // [V00 RetBuf]+ ldr x1, [fp, #0x10] // [V04 tmp2]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E ; gcrRegs -[x0]+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1] ; byrRegs +[x0]- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- ; byrRegs -[x0]
- ;; size=120 bbWeight=1 PerfScore 25.50+ ldr x1, [fp, #0x38] // [V00 RetBuf]
+ ; byrRegs +[x1]
+ ldp x2, x3, [x0]
+ stp x2, x3, [x1]
+ ldr x2, [x0, #0x10]
+ str x2, [x1, #0x10]
+ ;; size=136 bbWeight=1 PerfScore 34.50 G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0) ; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 38 (0x00026) Actual length = 152 (0x000098)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M34046_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M34046_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov x1, xzr
mov w2, wzr
@@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=32 bbWeight=1 PerfScore 8.50
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 14.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -65,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x30] // [V00 TypeCtx]
str x1, [fp, #0x28] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M56297_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V04 tmp1]
- b G_M56297_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V04 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x2, fp, #32 // [V02 loc0]
ldr x0, [fp, #0x18] // [V04 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)+ Function Length : 21 (0x00015) Actual length = 84 (0x000054) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -32,9 +32,11 @@ G_M33967_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
mov w1, #6- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
ldr x0, [fp, #0x40] // [V00 arg0]+ ; byrRegs -[x0] ldr x1, [fp, #0x38] // [V01 arg1]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -48,7 +50,7 @@ G_M33967_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_NEWFAST+ bl CORINFO_HELP_DBLROUND ; gcrRegs +[x0]
; gcr arg pop 0
str x0, [fp, #0x20] // [V05 tmp1]
@@ -8,84 +8,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x19 single-def+; V00 this [V00,T03] ( 3, 2.50) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x20 single-def ; V03 loc0 [V03,T02] ( 7, 5 ) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 2 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 2.80) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.50 PerfScore 6.50
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 20.50, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -96,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,9 +98,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]!+ 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]!
+ E4 end E4 end
E4 end
1[System.DateTimeOffset]]():System.Nullable
1System.DateTimeOffset@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_BOX+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]
str x0, [fp, #0x10] // [V04 tmp2]- ldr x2, [fp, #0x10] // [V04 tmp2]
- ; gcrRegs +[x2]
- ldr x0, [fp, #0x38] // [V00 RetBuf]+ ldr x1, [fp, #0x10] // [V04 tmp2]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E ; gcrRegs -[x0]+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1] ; byrRegs +[x0]- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- ; byrRegs -[x0]
- ;; size=120 bbWeight=1 PerfScore 25.50+ ldr x1, [fp, #0x38] // [V00 RetBuf]
+ ; byrRegs +[x1]
+ ldp x2, x3, [x0]
+ stp x2, x3, [x1]
+ ldr x2, [x0, #0x10]
+ str x2, [x1, #0x10]
+ ;; size=136 bbWeight=1 PerfScore 34.50 G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0) ; ============================================================
Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 38 (0x00026) Actual length = 152 (0x000098)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,28 +22,13 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
str x1, [fp, #0x28] // [V01 arg0]
str x2, [fp, #0x20] // [V02 arg1]
;; size=24 bbWeight=1 PerfScore 5.50-G_M305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M305_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M305_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V05 tmp1]
- b G_M305_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V05 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x3, fp, #24 // [V03 loc0]
ldr x0, [fp, #0x10] // [V05 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -56,13 +41,13 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x4, [x4]
blr x4
; gcrRegs -[x1-x2] +[x0]- ;; size=36 bbWeight=1 PerfScore 12.00
-G_M305_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=60 bbWeight=1 PerfScore 17.50
+G_M305_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 12, PerfScore 37.60, instruction count 32, allocated bytes for code 128 (MethodHash=fd28fece) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)+; Total bytes of code 92, prolog size 12, PerfScore 25.00, instruction count 23, allocated bytes for code 92 (MethodHash=fd28fece) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -73,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 32 (0x00020) Actual length = 128 (0x000080)+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
6[System.__Canon,System.__Canon,System.Text.StructListBuilder
1[int],System.ReadOnlyMemory1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback
1[System.ValueTuple6[System.__Canon,System.__Canon,System.Text.StructListBuilder
1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)@@ -34,7 +34,7 @@ G_M60442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str w6, [fp, #0x2C] // [V06 arg5]
str w7, [fp, #0x28] // [V07 arg6]
;; size=52 bbWeight=1 PerfScore 12.00-G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x48] // [V02 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -48,26 +48,11 @@ G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x1, [fp, #0x20] // [V09 tmp1+0x08]
ldr x0, [fp, #0x50] // [V01 TypeCtx]
; byrRegs -[x0]- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M60442_IG04
- ;; size=48 bbWeight=1 PerfScore 18.50
-G_M60442_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x50] // [V01 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V10 tmp2]
- b G_M60442_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M60442_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x50] // [V01 TypeCtx] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V10 tmp2]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr w0, [fp, #0x2C] // [V06 arg5]
str w0, [sp] // [V08 OutArgs]
ldr w0, [fp, #0x28] // [V07 arg6]
@@ -93,14 +78,14 @@ G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x8
; gcrRegs -[x0 x2 x7]
; byrRegs -[x3 x6]- ;; size=72 bbWeight=1 PerfScore 28.00
-G_M60442_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=128 bbWeight=1 PerfScore 43.00
+G_M60442_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp, #0x08]
add sp, sp, #112
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 228, prolog size 20, PerfScore 70.10, instruction count 57, allocated bytes for code 228 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)+; Total bytes of code 192, prolog size 20, PerfScore 57.50, instruction count 48, allocated bytes for code 192 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -111,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
6[System.__Canon,System.__Canon,System.Text.StructListBuilder
1[int],System.ReadOnlyMemory1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback
1[System.ValueTuple6[System.__Canon,System.__Canon,System.Text.StructListBuilder
1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)@@ -34,7 +34,7 @@ G_M60442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str w6, [fp, #0x2C] // [V06 arg5]
str w7, [fp, #0x28] // [V07 arg6]
;; size=52 bbWeight=1 PerfScore 12.00-G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x48] // [V02 arg1]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -48,26 +48,11 @@ G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x1, [fp, #0x20] // [V09 tmp1+0x08]
ldr x0, [fp, #0x50] // [V01 TypeCtx]
; byrRegs -[x0]- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M60442_IG04
- ;; size=48 bbWeight=1 PerfScore 18.50
-G_M60442_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x50] // [V01 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V10 tmp2]
- b G_M60442_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M60442_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x50] // [V01 TypeCtx] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V10 tmp2]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr w0, [fp, #0x2C] // [V06 arg5]
str w0, [sp] // [V08 OutArgs]
ldr w0, [fp, #0x28] // [V07 arg6]
@@ -93,14 +78,14 @@ G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x8
; gcrRegs -[x0 x2 x7]
; byrRegs -[x3 x6]- ;; size=72 bbWeight=1 PerfScore 28.00
-G_M60442_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=128 bbWeight=1 PerfScore 43.00
+G_M60442_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp, #0x08]
add sp, sp, #112
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 228, prolog size 20, PerfScore 70.10, instruction count 57, allocated bytes for code 228 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)+; Total bytes of code 192, prolog size 20, PerfScore 57.50, instruction count 48, allocated bytes for code 192 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0) ; ============================================================
Unwind Info:
@@ -111,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,7 +8,7 @@
; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <System.IComparable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02 ] ( 1, 1 ) struct (16) [fp+0x48] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>-; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Decimal]>+; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Decimal]> ; V04 tmp3 [V04 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Decimal]>
;
; Lcl frame size = 80
@@ -19,15 +19,20 @@ G_M63921_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x58] // [V00 arg0]
;; size=12 bbWeight=1 PerfScore 2.50
G_M63921_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- add x0, fp, #48 // [V03 tmp2]
- ldr x2, [fp, #0x58] // [V00 arg0]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]+ ldr x1, [fp, #0x58] // [V00 arg0]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ldp x1, x2, [x0]
+ stp x1, x2, [fp, #0x30]
+ ldr x1, [x0, #0x10]
+ str x1, [fp, #0x40] movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
@@ -54,13 +59,13 @@ G_M63921_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3- ;; size=132 bbWeight=1 PerfScore 38.50+ ;; size=144 bbWeight=1 PerfScore 47.00 G_M63921_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 8, PerfScore 43.00, instruction count 38, allocated bytes for code 152 (MethodHash=ae63064e) for method NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=ae63064e) for method NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0) ; ============================================================
Unwind Info:
@@ -71,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 38 (0x00026) Actual length = 152 (0x000098)+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,7 +8,7 @@
; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <System.Object>
; V01 loc0 [V01 ] ( 1, 1 ) struct (16) [fp+0x58] do-not-enreg[SA] multireg-arg must-init ld-addr-op <System.Guid>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03 ] ( 1, 1 ) struct (24) [fp+0x40] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Guid]>+; V03 tmp1 [V03 ] ( 1, 1 ) struct (24) [fp+0x40] do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Guid]> ; V04 tmp2 [V04 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Guid>
; V05 tmp3 [V05 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
@@ -22,17 +22,22 @@ G_M34635_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x68] // [V00 arg0]
;; size=20 bbWeight=1 PerfScore 4.50
G_M34635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- add x0, fp, #64 // [V03 tmp1]
- ldr x2, [fp, #0x68] // [V00 arg0]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]+ ldr x1, [fp, #0x68] // [V00 arg0]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ldp x1, x2, [x0]
+ stp x1, x2, [fp, #0x40]
+ ldr w1, [x0, #0x10]
+ str w1, [fp, #0x50] movi v16.4s, #0
str q16, [fp, #0x58] // [V01 loc0]
ldr x0, [fp, #0x58] // [V01 loc0]+ ; byrRegs -[x0] ldr x1, [fp, #0x60] // [V01 loc0+0x08]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -53,13 +58,13 @@ G_M34635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3- ;; size=116 bbWeight=1 PerfScore 35.00+ ;; size=128 bbWeight=1 PerfScore 43.50 G_M34635_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 144, prolog size 16, PerfScore 41.50, instruction count 36, allocated bytes for code 144 (MethodHash=607178b4) for method NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)+; Total bytes of code 156, prolog size 16, PerfScore 50.00, instruction count 39, allocated bytes for code 156 (MethodHash=607178b4) for method NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0) ; ============================================================
Unwind Info:
@@ -70,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 36 (0x00024) Actual length = 144 (0x000090)+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,7 +8,7 @@
; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x268] do-not-enreg[] class-hnd <System.Object>
; V01 loc0 [V01 ] ( 1, 1 ) struct (96) [fp+0x208] do-not-enreg[S] must-init ld-addr-op <MixedAllStruct>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03 ] ( 1, 1 ) struct (104) [fp+0x1A0] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <System.Nullable`1[MixedAllStruct]>+; V03 tmp1 [V03 ] ( 1, 1 ) struct (104) [fp+0x1A0] do-not-enreg[S] must-init "impAppendStmt" <System.Nullable`1[MixedAllStruct]> ; V04 tmp2 [V04 ] ( 1, 1 ) struct (96) [fp+0x140] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <MixedAllStruct>
; V05 tmp3 [V05 ] ( 1, 1 ) struct (96) [fp+0xE0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <MixedAllStruct>
; V06 tmp4 [V06 ] ( 1, 1 ) struct (104) [fp+0x78] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Nullable`1[MixedAllStruct]>
@@ -35,21 +35,34 @@ G_M13613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0xD1FFAB1E] // [V00 arg0]
;; size=64 bbWeight=1 PerfScore 12.50
G_M13613_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- add x0, fp, #0xD1FFAB1E // [V03 tmp1]
- ldr x2, [fp, #0xD1FFAB1E] // [V00 arg0]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]+ ldr x1, [fp, #0xD1FFAB1E] // [V00 arg0]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ;; size=20 bbWeight=1 PerfScore 4.50
+G_M13613_IG03: ; bbWeight=1, nogc, extend
+ ldp q16, q17, [x0]
+ stp q16, q17, [fp, #0xD1FFAB1E]
+ ldp q16, q17, [x0, #0x20]
+ stp q16, q17, [fp, #0xD1FFAB1E]
+ ldp q16, q17, [x0, #0x40]
+ stp q16, q17, [fp, #0xD1FFAB1E]
+ ldr x1, [x0, #0x60]
+ str x1, [fp, #0xD1FFAB1E]
+ ;; size=32 bbWeight=1 PerfScore 16.00
+G_M13613_IG04: ; bbWeight=1, extend add x0, fp, #0xD1FFAB1E+ ; byrRegs -[x0] movi v16.16b, #0
stp q16, q16, [x0]
stp q16, q16, [x0, #0x20]
stp q16, q16, [x0, #0x40]- ;; size=44 bbWeight=1 PerfScore 9.00
-G_M13613_IG03: ; bbWeight=1, nogc, extend+ ;; size=20 bbWeight=1 PerfScore 4.00
+G_M13613_IG05: ; bbWeight=1, nogc, extend add x0, fp, #0xD1FFAB1E
ldp q16, q17, [x0, #0xE0]
stp q16, q17, [fp, #0xE0]
@@ -58,7 +71,7 @@ G_M13613_IG03: ; bbWeight=1, nogc, extend
ldp q16, q17, [x0, #0xD1FFAB1E]
stp q16, q17, [fp, #0xD1FFAB1E]
;; size=28 bbWeight=1 PerfScore 12.50-G_M13613_IG04: ; bbWeight=1, extend+G_M13613_IG06: ; bbWeight=1, extend add x0, fp, #224 // [V05 tmp3]
add x8, fp, #0xD1FFAB1E // [V04 tmp2]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -67,7 +80,7 @@ G_M13613_IG04: ; bbWeight=1, extend
ldr x1, [x1]
blr x1
;; size=28 bbWeight=1 PerfScore 6.50-G_M13613_IG05: ; bbWeight=1, nogc, extend+G_M13613_IG07: ; bbWeight=1, nogc, extend add x0, fp, #0xD1FFAB1E
ldr x1, [x0, #0x78]
str x1, [fp, #0x78]
@@ -78,7 +91,7 @@ G_M13613_IG05: ; bbWeight=1, nogc, extend
ldp q16, q17, [x0, #0xC0]
stp q16, q17, [fp, #0xC0]
;; size=36 bbWeight=1 PerfScore 16.50-G_M13613_IG06: ; bbWeight=1, nogc, extend+G_M13613_IG08: ; bbWeight=1, nogc, extend add x0, fp, #0xD1FFAB1E
ldr x1, [x0, #0x18]
str x1, [fp, #0x18]
@@ -91,7 +104,7 @@ G_M13613_IG06: ; bbWeight=1, nogc, extend
ldr x1, [x0, #0x70]
str x1, [fp, #0x70]
;; size=44 bbWeight=1 PerfScore 20.50-G_M13613_IG07: ; bbWeight=1, extend+G_M13613_IG09: ; bbWeight=1, extend add x0, fp, #120 // [V06 tmp4]
add x1, fp, #24 // [V07 tmp5]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -100,13 +113,13 @@ G_M13613_IG07: ; bbWeight=1, extend
ldr x2, [x2]
blr x2
;; size=28 bbWeight=1 PerfScore 6.50-G_M13613_IG08: ; bbWeight=1, epilog, nogc, extend+G_M13613_IG10: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp]
add sp, sp, #0xD1FFAB1E
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 284, prolog size 60, PerfScore 86.50, instruction count 71, allocated bytes for code 284 (MethodHash=417fcad2) for method NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)+; Total bytes of code 312, prolog size 60, PerfScore 102.00, instruction count 78, allocated bytes for code 312 (MethodHash=417fcad2) for method NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0) ; ============================================================
Unwind Info:
@@ -117,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M50024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M50024_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M50024_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M50024_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M50024_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M50024_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M50024_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M50024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M50024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M50024_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M50024_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=8de53c97) for method System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=8de53c97) for method System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,19 +7,14 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01 ] ( 5, 5 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Numerics.Vector`1[System.__Canon]>
;# 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 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05 ] ( 4, 4 ) long -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._00 (fldOffset=0x0)" P-DEP
; V06 tmp4 [V06 ] ( 4, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._01 (fldOffset=0x8)" P-DEP-; V07 tmp5 [V07,T06] ( 2, 4 ) long -> x0 "argument with side effect"
-; V08 rat0 [V08,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V09 rat1 [V09,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V10 rat2 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup"
-; V11 rat3 [V11,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V12 rat4 [V12,T03] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp5 [V07,T01] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 24
@@ -31,47 +26,22 @@ G_M39513_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x1, x2, [fp, #0x10] // [V01 arg0], [V01 arg0+0x08]
mov x19, x0
;; size=24 bbWeight=1 PerfScore 5.00-G_M39513_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M39513_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M39513_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M39513_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M39513_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M39513_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M39513_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowForUnsupportedNumericsVectorBaseType[System.__Canon]()
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M39513_IG08
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M39513_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M39513_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M39513_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M39513_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M39513_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M39513_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY add x1, fp, #16 // [V01 arg0]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for System.Numerics.Vector:GetElementUnsafe[System.__Canon](byref,int):System.__Canon
@@ -80,14 +50,14 @@ G_M39513_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=28 bbWeight=1 PerfScore 6.50
-G_M39513_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=88 bbWeight=1 PerfScore 18.00
+G_M39513_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.82, instruction count 42, allocated bytes for code 168 (MethodHash=480265a6) for method System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=480265a6) for method System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -98,7 +68,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[int]](System.ValueTuple
2[System.Canon,System.Nullable1[int]]):System.Tuple
2[System.__Canon,System.Nullable`1[int]] (FullOpts)@@ -7,13 +7,11 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg single-def <System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]>
;# 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,T04] ( 2, 4 ) long -> x0 "argument with side effect"
-; V05 rat0 [V05,T03] ( 3, 4 ) long -> x0 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"+; V04 tmp2 [V04,T02] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 32
@@ -23,37 +21,26 @@ G_M8952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
stp x1, x2, [fp, #0x18] // [V01 arg0], [V01 arg0+0x08]
;; size=16 bbWeight=1 PerfScore 3.50-G_M8952_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x18]
- cbz x2, G_M8952_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M8952_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M8952_IG05
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M8952_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M8952_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=16 bbWeight=0.20 PerfScore 0.50
-G_M8952_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldp x1, x2, [fp, #0x18] // [V01 arg0], [V01 arg0+0x08]
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Tuple:Create[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):System.Tuple`2[System.__Canon,System.Nullable`1[int]]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M8952_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=36 bbWeight=1 PerfScore 10.00
+G_M8952_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 16, PerfScore 21.70, instruction count 20, allocated bytes for code 80 (MethodHash=0017dd07) for method System.TupleExtensions:ToTuple[System.__Canon,System.Nullable`1[int]](System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)+; Total bytes of code 60, prolog size 16, PerfScore 15.50, instruction count 15, allocated bytes for code 60 (MethodHash=0017dd07) for method System.TupleExtensions:ToTuple[System.__Canon,System.Nullable`1[int]](System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts) ; ============================================================
Unwind Info:
@@ -64,7 +51,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 20 (0x00014) Actual length = 80 (0x000050)+ 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)
@@ -8,97 +8,96 @@
; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 5, 3.60) long -> x0 single-def+; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> x20 single-def ; V01 arg0 [V01,T00] ( 6, 4.50) ref -> x19 class-hnd single-def <System.__Canon[]>
;* V02 arg1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Index>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T07] ( 3, 2 ) long -> x2 "spilling helperCall"+; V06 tmp1 [V06,T07] ( 2, 2 ) long -> x0 "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Index>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Index>-; V11 tmp6 [V11,T03] ( 7, 3.50) int -> x2 "Inline stloc first use temp"
-; V12 tmp7 [V12,T09] ( 2, 2 ) int -> x1 "Inlining Arg"+; V11 tmp6 [V11,T03] ( 7, 3.50) int -> x23 "Inline stloc first use temp"
+; V12 tmp7 [V12,T08] ( 2, 2 ) int -> x0 "Inlining Arg" ; V13 tmp8 [V13,T04] ( 3, 3 ) int -> x20 "Inlining Arg"-; V14 tmp9 [V14,T08] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
-; V15 tmp10 [V15,T02] ( 4, 2.50) int -> x20 single-def "field V02._value (fldOffset=0x0)" P-INDEP
-; V16 tmp11 [V16,T10] ( 2, 1 ) byref -> x0 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp12 [V17,T12] ( 2, 1 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP
-; V18 tmp13 [V18,T11] ( 2, 1 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp14 [V19,T13] ( 2, 1 ) int -> x1 "field V07._length (fldOffset=0x8)" P-INDEP+; V14 tmp9 [V14,T06] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
+; V15 tmp10 [V15,T02] ( 4, 2.50) int -> x21 single-def "field V02._value (fldOffset=0x0)" P-INDEP
+; V16 tmp11 [V16,T09] ( 2, 1 ) byref -> x0 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V17 tmp12 [V17,T11] ( 2, 1 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP
+; V18 tmp13 [V18,T10] ( 2, 1 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T12] ( 2, 1 ) int -> x1 "field V07._length (fldOffset=0x8)" P-INDEP ;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V10._value (fldOffset=0x0)" P-INDEP-; V22 cse0 [V22,T06] ( 4, 2 ) int -> x0 "CSE - aggressive"
-; V23 rat0 [V23,T05] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V22 cse0 [V22,T05] ( 4, 2 ) int -> x22 "CSE - aggressive" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M2474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38] mov fp, sp- str x0, [fp, #0x18]+ str x0, [fp, #0x10]
+ mov x20, x0 mov x19, x1
; gcrRegs +[x19]- mov w20, w2
- ;; size=24 bbWeight=1 PerfScore 4.50+ mov w21, w2
+ ;; size=36 bbWeight=1 PerfScore 7.00 G_M2474_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cbnz x19, G_M2474_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M2474_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]- cbnz w20, G_M2474_IG10+ cbnz w21, G_M2474_IG07 mov x0, xzr
; byrRegs +[x0]
mov w1, wzr
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M2474_IG04: ; bbWeight=0.50, epilog, nogc, extend- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=20 bbWeight=0.50 PerfScore 3.00 G_M2474_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19]
; byrRegs -[x0]- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M2474_IG07
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M2474_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M2474_IG08
- ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M2474_IG07: ; bbWeight=0.10, 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_METHOD
- mov x2, x0
- ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M2474_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19]
- cmp x0, x2
- bne G_M2474_IG11
- ldr w0, [x19, #0x08]
- sxtw w1, w0
- sxtw w2, w20
- add w1, w20, w1
- cmp w2, #0
- csinc w2, w2, w1, ge
- cmp w0, w2
- blo G_M2474_IG12
- add x1, x19, #16
- ; byrRegs +[x1]
- ubfiz x3, x2, #3, #32
- add x19, x1, x3+ bl CORINFO_HELP_MEMCPY
+ ldr x1, [x19]
+ cmp x1, x0
+ bne G_M2474_IG08
+ ldr w22, [x19, #0x08]
+ sxtw w0, w22
+ sxtw w23, w21
+ add w0, w21, w0
+ cmp w23, #0
+ csinc w23, w23, w0, ge
+ cmp w22, w23
+ blo G_M2474_IG09
+ mov x0, x20
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ add x0, x19, #16
+ ; byrRegs +[x0]
+ ubfiz x1, x23, #3, #32
+ add x19, x0, x1 ; gcrRegs -[x19]
; byrRegs +[x19]- sub w20, w0, w2+ sub w20, w22, w23 cmp w20, #0
cset x0, ge+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E // code for <unknown method>- ; byrRegs -[x1] movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
@@ -106,13 +105,15 @@ G_M2474_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov x0, x19
; byrRegs +[x0]
sxtw w1, w20- ;; size=96 bbWeight=0.50 PerfScore 10.75
-G_M2474_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30+ ;; size=136 bbWeight=0.50 PerfScore 13.75
+G_M2474_IG06: ; bbWeight=0.50, 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=12 bbWeight=0.50 PerfScore 1.50
-G_M2474_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M2474_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x0 x19]
mov w0, #2
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentNullException(int)
@@ -122,7 +123,7 @@ G_M2474_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
blr x1
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00-G_M2474_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M2474_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArrayTypeMismatchException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -130,7 +131,7 @@ G_M2474_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00-G_M2474_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M2474_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -139,7 +140,7 @@ G_M2474_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 16, PerfScore 24.45, instruction count 68, allocated bytes for code 272 (MethodHash=d8fdf655) for method System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 304, prolog size 24, PerfScore 28.75, instruction count 76, allocated bytes for code 304 (MethodHash=d8fdf655) for method System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -150,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 68 (0x00044) Actual length = 272 (0x000110)+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -161,10 +162,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
- E4 end
- E4 end+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+ E6 save_next
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
@@ -8,92 +8,90 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x1 class-hnd single-def <System.__Canon[]>+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x20 class-hnd single-def <System.__Canon[]> ;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[System.__Canon]>
; V03 loc0 [V03 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V08 tmp4 [V08,T04] ( 2, 2 ) byref -> x19 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T05] ( 2, 2 ) int -> x20 single-def "field V02._length (fldOffset=0x8)" P-INDEP+; V08 tmp4 [V08,T02] ( 2, 2 ) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T03] ( 2, 2 ) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP ; V10 tmp6 [V10 ] ( 2, 2 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._reference (fldOffset=0x0)" P-DEP
; V11 tmp7 [V11 ] ( 2, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP-; V12 tmp8 [V12,T07] ( 3, 2 ) byref -> x2 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T08] ( 3, 2 ) int -> x3 "field V05._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T06] ( 2, 4 ) long -> x1 "argument with side effect"
-; V15 rat0 [V15,T03] ( 3, 4 ) long -> x1 "runtime lookup"
-; V16 rat1 [V16,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"+; V12 tmp8 [V12,T05] ( 3, 2 ) byref -> x0 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T06] ( 3, 2 ) int -> x1 "field V05._length (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T04] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 32
G_M15813_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x40]!+ stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x30]+ stp x21, x22, [sp, #0x40] mov fp, sp
str xzr, [fp, #0x18] // [V03 loc0]
str x0, [fp, #0x28]- mov x19, x2
- ; byrRegs +[x19]
- mov w20, w3
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M15813_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=80000 {x19}, byref, isz
- ; gcrRegs +[x1]
- cbnz x1, G_M15813_IG04
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M15813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x1]
- mov x2, xzr
- ; byrRegs +[x2]
- mov w3, wzr
- b G_M15813_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M15813_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=80000 {x19}, byref
- ; gcrRegs +[x1]
- ; byrRegs -[x2]
- add x2, x1, #16
- ; byrRegs +[x2]
- ldr w3, [x1, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M15813_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80004 {x2 x19}, byref, isz
- ; gcrRegs -[x1]
- str x2, [fp, #0x18] // [V10 tmp6]
- str w3, [fp, #0x20] // [V11 tmp7]
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M15813_IG07
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M15813_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; byrRegs -[x2]
- b G_M15813_IG08
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15813_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref+ mov x19, x0
+ mov x20, x1
+ ; gcrRegs +[x20]
+ mov x21, x2
+ ; byrRegs +[x21]
+ mov w22, w3
+ ;; size=40 bbWeight=1 PerfScore 7.50
+G_M15813_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY
+ cbnz x20, G_M15813_IG04
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M15813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs -[x20]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
+ b G_M15813_IG05
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
+G_M15813_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs +[x20]
+ ; byrRegs -[x0]
+ add x0, x20, #16
+ ; byrRegs +[x0]
+ ldr w1, [x20, #0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M15813_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200001 {x0 x21}, byref
+ ; gcrRegs -[x20]
+ str x0, [fp, #0x18] // [V10 tmp6]
+ str w1, [fp, #0x20] // [V11 tmp7]
+ mov x0, x19
+ ; byrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY mov x1, x0- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- mov x2, x19+ mov x2, x21 ; byrRegs +[x2]- mov w3, w20+ mov w3, w22 add x0, fp, #24 // [V03 loc0]
movz x4, #0xD1FFAB1E // code for System.ReadOnlySpan`1[System.__Canon]:CopyTo(System.Span`1[System.__Canon]):this
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
ldr x4, [x4]
blr x4- ; byrRegs -[x2 x19]
- ;; size=32 bbWeight=1 PerfScore 7.00
-G_M15813_IG09: ; bbWeight=1, epilog, nogc, extend+ ; byrRegs -[x2 x21]
+ ;; size=64 bbWeight=1 PerfScore 12.50
+G_M15813_IG06: ; bbWeight=1, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x40] ldp x19, x20, [sp, #0x30]- ldp fp, lr, [sp], #0x40+ ldp fp, lr, [sp], #0x50 ret lr- ;; size=12 bbWeight=1 PerfScore 3.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 140, prolog size 20, PerfScore 29.65, instruction count 35, allocated bytes for code 140 (MethodHash=8247c23a) for method System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)+; Total bytes of code 164, prolog size 24, PerfScore 30.75, instruction count 41, allocated bytes for code 164 (MethodHash=8247c23a) for method System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts) ; ============================================================
Unwind Info:
@@ -104,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -112,9 +110,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----+ E6 save_next C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
- E4 end+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! E4 end
E4 end
E4 end
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T04] ( 5, 4.36) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 5, 5 ) struct (16) [fp+0x30] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[System.__Canon]>
-; V02 arg1 [V02,T06] ( 4, 4 ) struct ( 8) [fp+0x28] do-not-enreg[SF] ld-addr-op single-def <System.Range>+; V00 TypeCtx [V00,T00] ( 7, 7 ) long -> x19 single-def
+; V01 arg0 [V01,T04] ( 5, 5 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[System.__Canon]>
+; V02 arg1 [V02,T06] ( 4, 4 ) struct ( 8) [fp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.Range> ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -18,102 +18,101 @@
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[int,int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V10 tmp5 [V10,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <System.__Canon[]>
-; V11 tmp6 [V11 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>+; V10 tmp5 [V10,T07] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <System.__Canon[]>
+; V11 tmp6 [V11 ] ( 3, 6 ) struct (16) [fp+0x10] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]> ;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V13 tmp8 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Index>-; V14 tmp9 [V14,T00] ( 4, 8 ) int -> x1 "Inlining Arg"+; V14 tmp9 [V14,T01] ( 4, 8 ) int -> x0 "Inlining Arg" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>-; V18 tmp13 [V18,T01] ( 7, 7 ) int -> x19 "Inline stloc first use temp"
-; V19 tmp14 [V19,T02] ( 7, 7 ) int -> x3 "Inline stloc first use temp"+; V18 tmp13 [V18,T02] ( 7, 7 ) int -> x20 "Inline stloc first use temp"
+; V19 tmp14 [V19,T03] ( 7, 7 ) int -> x2 "Inline stloc first use temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V07.Item1 (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "field V07.Item2 (fldOffset=0x4)" P-INDEP-; V23 tmp18 [V23 ] ( 3, 6 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
-; V24 tmp19 [V24 ] ( 3, 6 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
-; V25 tmp20 [V25,T05] ( 6, 6 ) int -> x2 "field V13._value (fldOffset=0x0)" P-INDEP+; V23 tmp18 [V23 ] ( 3, 6 ) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
+; V24 tmp19 [V24 ] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V25 tmp20 [V25,T05] ( 6, 6 ) int -> x1 "field V13._value (fldOffset=0x0)" P-INDEP ;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V17.Item1 (fldOffset=0x0)" P-INDEP-; V27 tmp22 [V27,T12] ( 2, 2 ) int -> x20 "field V17.Item2 (fldOffset=0x4)" P-INDEP
-; V28 tmp23 [V28,T11] ( 2, 4 ) long -> x1 "argument with side effect"
-; V29 rat0 [V29,T09] ( 3, 4 ) long -> x1 "runtime lookup"
-; V30 rat1 [V30,T07] ( 3, 5.60) long -> x1 "spilling expr"
-; V31 rat2 [V31,T08] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"+; V27 tmp22 [V27,T09] ( 2, 2 ) int -> x21 "field V17.Item2 (fldOffset=0x4)" P-INDEP
+; V28 tmp23 [V28,T08] ( 2, 4 ) long -> x1 "argument with side effect" ;-; Lcl frame size = 56+; Lcl frame size = 48
G_M28107_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!- stp x19, x20, [sp, #0x48]
- str x21, [sp, #0x58]+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50] mov fp, sp- str xzr, [fp, #0x18] // [V11 tmp6]
- str x0, [fp, #0x40]
- stp x1, x2, [fp, #0x30] // [V01 arg0], [V01 arg0+0x08]
- str x3, [fp, #0x28] // [V02 arg1]
- ;; size=32 bbWeight=1 PerfScore 7.50+ str xzr, [fp, #0x10] // [V11 tmp6]
+ str x0, [fp, #0x38]
+ stp x1, x2, [fp, #0x28] // [V01 arg0], [V01 arg0+0x08]
+ str x3, [fp, #0x20] // [V02 arg1]
+ mov x19, x0
+ ;; size=36 bbWeight=1 PerfScore 8.00 G_M28107_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- ldr w1, [fp, #0x3C] // [V01 arg0+0x0c]
- ldr w2, [fp, #0x28] // [V02 arg1]
- sxtw w19, w2
- add w2, w2, w1
- cmp w19, #0
- csinc w19, w19, w2, ge
- ldr w2, [fp, #0x2C] // [V02 arg1+0x04]
- sxtw w3, w2
- add w2, w2, w1
- cmp w3, #0
- csinc w3, w3, w2, ge
- cmp w3, w1
- ccmp w19, w3, c, ls
- bhi G_M28107_IG08
- sub w20, w3, w19
- ldr x21, [fp, #0x30] // [V01 arg0]
- ; gcrRegs +[x21]
- stp xzr, xzr, [fp, #0x18]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x08]
- cmp x2, #24
- ble G_M28107_IG05
- ;; size=84 bbWeight=1 PerfScore 23.00
-G_M28107_IG03: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x1, #0x18]
- cbz x1, G_M28107_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M28107_IG04: ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- b G_M28107_IG06
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M28107_IG05: ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY
+ ldr w0, [fp, #0x34] // [V01 arg0+0x0c]
+ ldr w1, [fp, #0x20] // [V02 arg1]
+ sxtw w20, w1
+ add w1, w1, w0
+ cmp w20, #0
+ csinc w20, w20, w1, ge
+ ldr w1, [fp, #0x24] // [V02 arg1+0x04]
+ sxtw w2, w1
+ add w1, w1, w0
+ cmp w2, #0
+ csinc w2, w2, w1, ge
+ cmp w2, w0
+ ccmp w20, w2, c, ls
+ bhi G_M28107_IG04
+ sub w21, w2, w20
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x22, [fp, #0x28] // [V01 arg0]
+ ; gcrRegs +[x22]
+ stp xzr, xzr, [fp, #0x10]
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY mov x1, x0- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M28107_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ldr w3, [fp, #0x38] // [V01 arg0+0x08]
- add w3, w3, w19
- add x0, fp, #24 // [V11 tmp6]
- mov x2, x21+ ldr w3, [fp, #0x30] // [V01 arg0+0x08]
+ add w3, w3, w20
+ add x0, fp, #16 // [V11 tmp6]
+ mov x2, x22 ; gcrRegs +[x2]- mov w4, w20+ mov w4, w21 movz x5, #0xD1FFAB1E // code for System.Span`1[System.__Canon]:.ctor(System.__Canon[],int,int):this
movk x5, #0xD1FFAB1E LSL #16
movk x5, #1 LSL #32
ldr x5, [x5]
blr x5- ; gcrRegs -[x2 x21]
- ldp x0, x1, [fp, #0x18] // [V11 tmp6], [V11 tmp6+0x08]+ ; gcrRegs -[x2 x22]
+ ldp x0, x1, [fp, #0x10] // [V11 tmp6], [V11 tmp6+0x08] ; byrRegs +[x0]- ;; size=44 bbWeight=1 PerfScore 12.50
-G_M28107_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]+ ;; size=196 bbWeight=1 PerfScore 40.50
+G_M28107_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x50]
+ ldp x19, x20, [sp, #0x40] ldp fp, lr, [sp], #0x60
ret lr- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M28107_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ ;; size=16 bbWeight=1 PerfScore 4.00
+G_M28107_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.Range:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
@@ -123,7 +122,7 @@ G_M28107_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 24, PerfScore 52.92, instruction count 58, allocated bytes for code 232 (MethodHash=dccb9234) for method System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 272, prolog size 24, PerfScore 52.50, instruction count 68, allocated bytes for code 272 (MethodHash=dccb9234) for method System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -134,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)+ Function Length : 68 (0x00044) Actual length = 272 (0x000110) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,9 +141,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----- D0 8B save_reg X#2 Z#11 (0x0B); str x21, [sp, #88]
- C8 09 save_regp X#0 Z#9 (0x09); stp x19, x20, [sp, #72]+ E6 save_next
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end+ E4 end
@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41558_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M41558_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x1, [x1]
blr x1
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=48 bbWeight=1 PerfScore 13.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -63,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)+ 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)
@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41558_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M41558_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x1, [x1]
blr x1
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=48 bbWeight=1 PerfScore 13.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -63,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)+ 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,15 +8,12 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 5, 4.36) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 rat0 [V06,T06] ( 3, 4 ) long -> x1 "runtime lookup"
-; V07 rat1 [V07,T02] ( 3, 5.60) long -> x1 "spilling expr"
-; V08 rat2 [V08,T05] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -30,29 +27,12 @@ G_M54721_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cmp x2, #32
- ble G_M54721_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M54721_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x1, #0x20]
- cbz x1, G_M54721_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M54721_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M54721_IG06
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M54721_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -68,14 +48,14 @@ G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M54721_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=44 bbWeight=1 PerfScore 7.50
+G_M54721_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 116, prolog size 16, PerfScore 25.42, instruction count 29, allocated bytes for code 116 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1)+; Total bytes of code 80, prolog size 16, PerfScore 15.00, instruction count 20, allocated bytes for code 80 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -86,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -5,38 +5,43 @@
; partially interruptible
; Final local variable assignments
;-; V00 arg0 [V00 ] ( 1, 1 ) int -> [fp+0x6C] do-not-enreg[]
-; V01 loc0 [V01 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x58] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>+; V00 arg0 [V00 ] ( 1, 1 ) int -> [fp+0x8C] do-not-enreg[]
+; V01 loc0 [V01 ] ( 1, 1 ) struct ( 8) [fp+0x80] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x78] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] must-init "Reusable Box Helper"
-; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V08 tmp5 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V10 tmp7 [V10 ] ( 1, 1 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V12 tmp9 [V12 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V05 tmp2 [V05 ] ( 1, 1 ) float -> [fp+0x6C] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
+; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V08 tmp5 [V08 ] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
+; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V10 tmp7 [V10 ] ( 1, 1 ) double -> [fp+0x40] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
+; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V12 tmp9 [V12 ] ( 1, 1 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V13 tmp10 [V13 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
+; V14 tmp11 [V14 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
+; V15 tmp12 [V15 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V16 tmp13 [V16 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect" ;-; Lcl frame size = 96+; Lcl frame size = 128
G_M5822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x70]!+ stp fp, lr, [sp, #-0x90]! mov fp, sp
add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]- stp xzr, xzr, [x9, #0x40]
- str xzr, [x9, #0x50]
- str w0, [fp, #0x6C] // [V00 arg0]
- ;; size=36 bbWeight=1 PerfScore 7.50+ stp q16, q16, [x9, #0x40]
+ stp xzr, xzr, [x9, #0x60]
+ str xzr, [x9, #0x70]
+ str w0, [fp, #0x8C] // [V00 arg0]
+ ;; size=40 bbWeight=1 PerfScore 8.50 G_M5822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- ldr w0, [fp, #0x6C] // [V00 arg0]+ ldr w0, [fp, #0x8C] // [V00 arg0] cmp w0, #7
bhi G_M5822_IG03- ldr w0, [fp, #0x6C] // [V00 arg0]+ ldr w0, [fp, #0x8C] // [V00 arg0] mov w0, w0
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -53,31 +58,31 @@ G_M5822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #1 LSL #32
ldr x1, [x0]
; gcrRegs +[x1]- add x0, fp, #24 // [V11 tmp8]+ add x0, fp, #48 // [V12 tmp9] movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]- ldr x0, [fp, #0x18] // [V11 tmp8]+ ldr x0, [fp, #0x30] // [V12 tmp9] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] b G_M5822_IG11
;; size=52 bbWeight=1 PerfScore 14.50
G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ str xzr, [fp, #0x40] // [V10 tmp7]
+ add x1, fp, #64 // [V10 tmp7] movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]- str x0, [fp, #0x30] // [V08 tmp5]
- ldr x0, [fp, #0x30] // [V08 tmp5]
- str xzr, [x0, #0x08]
- ldr x1, [fp, #0x30] // [V08 tmp5]+ str x0, [fp, #0x28] // [V13 tmp10]
+ ldr x1, [fp, #0x28] // [V13 tmp10] ; gcrRegs +[x1]- add x0, fp, #32 // [V10 tmp7]+ add x0, fp, #56 // [V11 tmp8] ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -85,24 +90,24 @@ G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1]- ldr x0, [fp, #0x20] // [V10 tmp7]+ ldr x0, [fp, #0x38] // [V11 tmp8] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] b G_M5822_IG11- ;; size=68 bbWeight=1 PerfScore 18.50+ ;; size=68 bbWeight=1 PerfScore 17.00 G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ str xzr, [fp, #0x50] // [V08 tmp5]
+ add x1, fp, #80 // [V08 tmp5] movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]- str x0, [fp, #0x30] // [V08 tmp5]
- ldr x0, [fp, #0x30] // [V08 tmp5]
- str xzr, [x0, #0x08]
- ldr x1, [fp, #0x30] // [V08 tmp5]+ str x0, [fp, #0x20] // [V14 tmp11]
+ ldr x1, [fp, #0x20] // [V14 tmp11] ; gcrRegs +[x1]- add x0, fp, #40 // [V09 tmp6]+ add x0, fp, #72 // [V09 tmp6] ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -110,11 +115,11 @@ G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1]- ldr x0, [fp, #0x28] // [V09 tmp6]+ ldr x0, [fp, #0x48] // [V09 tmp6] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] b G_M5822_IG11- ;; size=68 bbWeight=1 PerfScore 18.50+ ;; size=68 bbWeight=1 PerfScore 17.00 G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -123,12 +128,12 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_BOX+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]- str x0, [fp, #0x10] // [V12 tmp9]
- ldr x1, [fp, #0x10] // [V12 tmp9]+ str x0, [fp, #0x18] // [V15 tmp12]
+ ldr x1, [fp, #0x18] // [V15 tmp12] ; gcrRegs +[x1]- add x0, fp, #56 // [V07 tmp4]+ add x0, fp, #88 // [V07 tmp4] ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -136,24 +141,24 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1]- ldr x0, [fp, #0x38] // [V07 tmp4]+ ldr x0, [fp, #0x58] // [V07 tmp4] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] b G_M5822_IG11
;; size=72 bbWeight=1 PerfScore 17.00
G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ str wzr, [fp, #0x6C] // [V05 tmp2]
+ add x1, fp, #108 // [V05 tmp2] movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION ; gcrRegs +[x0]- str x0, [fp, #0x48] // [V05 tmp2]
- ldr x0, [fp, #0x48] // [V05 tmp2]
- str wzr, [x0, #0x08]
- ldr x1, [fp, #0x48] // [V05 tmp2]+ str x0, [fp, #0x10] // [V16 tmp13]
+ ldr x1, [fp, #0x10] // [V16 tmp13] ; gcrRegs +[x1]- add x0, fp, #64 // [V06 tmp3]+ add x0, fp, #96 // [V06 tmp3] ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -161,11 +166,11 @@ G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1]- ldr x0, [fp, #0x40] // [V06 tmp3]+ ldr x0, [fp, #0x60] // [V06 tmp3] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] b G_M5822_IG11- ;; size=68 bbWeight=1 PerfScore 18.50+ ;; size=68 bbWeight=1 PerfScore 17.00 G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -173,32 +178,32 @@ G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #1 LSL #32
ldr x1, [x0]
; gcrRegs +[x1]- add x0, fp, #80 // [V04 tmp1]+ add x0, fp, #112 // [V04 tmp1] movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]- ldr x0, [fp, #0x50] // [V04 tmp1]+ ldr x0, [fp, #0x70] // [V04 tmp1] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] b G_M5822_IG11
;; size=52 bbWeight=1 PerfScore 14.50
G_M5822_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]- str xzr, [fp, #0x58] // [V02 loc1]
- ldr x0, [fp, #0x58] // [V02 loc1]+ str xzr, [fp, #0x78] // [V02 loc1]
+ ldr x0, [fp, #0x78] // [V02 loc1] ; gcrRegs +[x0]- str x0, [fp, #0x60] // [V01 loc0]+ str x0, [fp, #0x80] // [V01 loc0] ;; size=12 bbWeight=1 PerfScore 4.00
G_M5822_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
...
@@ -78,27 +78,30 @@ G_M22456_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=1 PerfScore 9.00
G_M22456_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ ldr x1, [fp, #0x18] // [V07 tmp5]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ldrh w1, [x0]
+ strh w1, [fp, #0x40] add x0, fp, #64 // [V01 loc0]- ldr x2, [fp, #0x18] // [V07 tmp5]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- add x0, fp, #64 // [V01 loc0]+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1- ;; size=48 bbWeight=1 PerfScore 11.00+ ;; size=52 bbWeight=1 PerfScore 14.50 G_M22456_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0) ; ============================================================
Unwind Info:
@@ -109,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,27 +78,30 @@ G_M61529_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=32 bbWeight=1 PerfScore 9.00
G_M61529_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]+ ldr x1, [fp, #0x18] // [V07 tmp5]
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #2 LSL #32
+ bl CORINFO_HELP_UNBOX
+ ; gcrRegs -[x1]
+ ; byrRegs +[x0]
+ ldrh w1, [x0]
+ strh w1, [fp, #0x40] add x0, fp, #64 // [V01 loc0]- ldr x2, [fp, #0x18] // [V07 tmp5]
- ; gcrRegs +[x2]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #2 LSL #32
- bl CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[x2]
- add x0, fp, #64 // [V01 loc0]+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
ldr x1, [x1]
blr x1- ;; size=48 bbWeight=1 PerfScore 11.00+ ;; size=52 bbWeight=1 PerfScore 14.50 G_M61529_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0) ; ============================================================
Unwind Info:
@@ -109,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -20,36 +18,24 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M41558_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M41558_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Array:Empty[System.__Canon]():System.__Canon[]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -60,7 +46,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)
3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray
1+Builder[System.ValueTuple`3[int,int,System.__Canon]@@ -7,18 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]>
;# 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 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> x1 "argument with side effect"
-; V07 rat0 [V07,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V09 rat2 [V09,T05] ( 3, 4 ) long -> x1 "runtime lookup"
-; V10 rat3 [V10,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V11 rat4 [V11,T03] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 24
@@ -29,22 +24,12 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, x0, [fp, #0x18] // [V01 loc0]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M7461_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7461_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -52,28 +37,13 @@ G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
; gcrRegs +[x0]
str x0, [fp, #0x18] // [V01 loc0]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M7461_IG08
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x18]
- cbz x1, G_M7461_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7461_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x1, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x0, fp, #24 // [V01 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -81,14 +51,14 @@ G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=92 bbWeight=1 PerfScore 19.00
+G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.50, instruction count 42, allocated bytes for code 168 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts) ; ============================================================
Unwind Info:
@@ -99,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,22 +7,17 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
mov w21, w2
;; size=32 bbWeight=1 PerfScore 6.00-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M26687_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
mov w2, w21
@@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x1]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M26687_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M26687_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=88 bbWeight=1 PerfScore 17.50
+G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T04] ( 5, 3.60) long -> x0 single-def
-; V01 arg0 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V02 arg1 [V02,T06] ( 3, 3 ) ubyte -> x2 single-def+; V00 TypeCtx [V00,T01] ( 7, 11.50) long -> x19 single-def
+; V01 arg0 [V01,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
+; V02 arg1 [V02,T05] ( 3, 3 ) ubyte -> x2 single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>-; V04 loc1 [V04 ] ( 2, 8 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>+; V04 loc1 [V04 ] ( 2, 4 ) struct (80) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -21,39 +21,39 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"-;* V13 tmp7 [V13,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp8 [V14,T01] ( 3, 12 ) ubyte -> x0 "Inline stloc first use temp"+;* V13 tmp7 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V14 tmp8 [V14,T03] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>-; V18 tmp12 [V18,T02] ( 4, 9 ) ref -> x19 "field V03._builder (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T00] ( 8, 18 ) int -> x20 "field V03._index (fldOffset=0x8)" P-INDEP+; V18 tmp12 [V18,T02] ( 3, 6.50) ref -> x20 "field V03._builder (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T00] ( 5, 14.50) int -> x21 "field V03._index (fldOffset=0x8)" P-INDEP ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "V05.[004..005)"-; V21 tmp15 [V21,T09] ( 2, 2 ) long -> x0 "argument with side effect"
-; V22 rat0 [V22,T08] ( 3, 2 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V21 tmp15 [V21,T07] ( 2, 2 ) long -> x0 "argument with side effect" ;-; Lcl frame size = 96+; Lcl frame size = 88 -G_M36549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+G_M36549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!- stp x19, x20, [sp, #0x70]+ stp x19, x20, [sp, #0x68]
+ str x21, [sp, #0x78] mov fp, sp- add x9, fp, #24+ add x9, fp, #16 movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
stp xzr, xzr, [x9, #0x40]- str x0, [fp, #0x68]
- mov x19, x1
- ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
-G_M36549_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ str x0, [fp, #0x60]
+ mov x19, x0
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=48 bbWeight=1 PerfScore 9.50
+G_M36549_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz tst w2, #255- beq G_M36549_IG09+ beq G_M36549_IG10 ;; size=8 bbWeight=1 PerfScore 1.50-G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19+G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ mov x0, x20 ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -61,22 +61,23 @@ G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x1, [x1]
ldr wzr, [x0]
blr x1- ; gcrRegs -[x19]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w20, w1
- add w20, w20, #1
- ldr x0, [x19, #0x08]
- ldr w0, [x0, #0x10]+ ; gcrRegs -[x20]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov w21, w1
+ b G_M36549_IG05
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
+G_M36549_IG04: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]- cmp w20, w0
- bge G_M36549_IG05
- ;; size=56 bbWeight=0.50 PerfScore 9.00
-G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x08]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x0, [x20, #0x08] ; gcrRegs +[x0]- add x8, fp, #24 // [V04 loc1]
- mov w1, w20+ add x8, fp, #16 // [V04 loc1]
+ mov w1, w21 movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -84,70 +85,75 @@ G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr wzr, [x0]
blr x2
; gcrRegs -[x0]- ldrb w0, [fp, #0x34] // [V04 loc1+0x1c]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldrb w0, [fp, #0x2C] // [V04 loc1+0x1c] sub w1, w0, #1
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi- bls G_M36549_IG07
- add w20, w20, #1
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldr w0, [x0, #0x10]
- ; gcrRegs -[x0]
- cmp w20, w0
- blt G_M36549_IG04
- ;; size=80 bbWeight=4 PerfScore 102.00
-G_M36549_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M36549_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x80
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M36549_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M36549_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x80
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M36549_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M36549_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M36549_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M36549_IG12
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M36549_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+ bls G_M36549_IG08
+ ;; size=100 bbWeight=2 PerfScore 47.00
+G_M36549_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M36549_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19+ bl CORINFO_HELP_MEMCPY
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ cmp w21, w0
+ blt G_M36549_IG04
+ ;; size=40 bbWeight=4 PerfScore 44.00
+G_M36549_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36549_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
+ ldp fp, lr, [sp], #0x80
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M36549_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36549_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
+ ldp fp, lr, [sp], #0x80
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M36549_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x20]
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x20 ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.OverloadResolution:SingleValidResult[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2- ; gcrRegs -[x1 x19]
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M36549_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]+ ; gcrRegs -[x1 x20]
+ ;; size=44 bbWeight=0.50 PerfScore 4.50
+G_M36549_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68] ldp fp, lr, [sp], #0x80
ret lr- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.50 -; Total bytes of code 288, prolog size 36, PerfScore 132.85, instruction count 72, allocated bytes for code 288 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)+; Total bytes of code 336, prolog size 40, PerfScore 120.00, instruction count 84, allocated bytes for code 336 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts) ; ============================================================
Unwind Info:
@@ -158,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 72 (0x00048) Actual length = 288 (0x000120)+ Function Length : 84 (0x00054) Actual length = 336 (0x000150) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -172,10 +178,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
...
@@ -8,69 +8,68 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;
; Lcl frame size = 8
G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18]- str x21, [sp, #0x28]+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38] mov fp, sp
str x0, [fp, #0x10]- mov x20, x1+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov w22, w2
+ mov x20, x3 ; gcrRegs +[x20]- mov w21, w2
- mov x19, x3
- ; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x11, [x1, #0x10]
- cbz x11, G_M18340_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M18340_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+ ;; size=40 bbWeight=1 PerfScore 7.50
+G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x11, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x21 ; gcrRegs +[x0]- mov x1, x19+ mov x11, x23
+ mov x1, x20 ; gcrRegs +[x1]- ldr x2, [x11]+ ldr x2, [x23] blr x2- ; gcrRegs -[x1 x19-x20]
- uxtb w1, w21
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]+ ; gcrRegs -[x1 x20-x21]
+ uxtb w1, w22
+ ;; size=68 bbWeight=1 PerfScore 12.50
+G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=20 bbWeight=1 PerfScore 6.00 -; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -81,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)+ Function Length : 32 (0x00020) Actual length = 128 (0x000080) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,9 +88,9 @@ 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]+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+ E6 save_next C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray
1[System.__Canon]:this (FullOpts)@@ -8,57 +8,54 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 3 ) byref -> x19 this single-def
-; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def+; V00 this [V00,T01] ( 3, 3 ) byref -> x20 this single-def
+; V01 TypeCtx [V01,T00] ( 5, 5 ) 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"+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T04] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T03] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP ;
; Lcl frame size = 8
G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28] mov fp, sp
str x1, [fp, #0x10]- mov x19, x0
- ; byrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M44373_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- b G_M44373_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x20, x0
+ ; byrRegs +[x20]
+ mov x19, x1
+ ;; size=28 bbWeight=1 PerfScore 5.50
+G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr x1, [x19]+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x1, [x20] ; gcrRegs +[x1]- bl CORINFO_HELP_ISINSTANCEOFARRAY+ mov x0, x21
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[x1] +[x0]- ; byrRegs -[x19]
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20+ ; byrRegs -[x20]
+ ;; size=56 bbWeight=1 PerfScore 11.00
+G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30 ret lr- ;; size=12 bbWeight=1 PerfScore 4.00+ ;; size=16 bbWeight=1 PerfScore 5.00 -; Total bytes of code 76, prolog size 16, PerfScore 20.40, instruction count 19, allocated bytes for code 76 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)+; Total bytes of code 100, prolog size 20, PerfScore 21.50, instruction count 25, allocated bytes for code 100 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)+ Function Length : 25 (0x00019) Actual length = 100 (0x000064) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -77,10 +74,9 @@ Unwind Info:
---- 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
- E4 end+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
E4 end
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -20,36 +18,24 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M15963_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M15963_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -60,7 +46,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)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M3011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M3011_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M3011_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M3011_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M3011_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M3011_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M3011_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.IEnumerator+mkSeq@177[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M38576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M38576_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M38576_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M38576_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M38576_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M38576_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M38576_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,47 +9,38 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def
-; V02 arg1 [V02,T08] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T09] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V04 arg3 [V04,T10] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V04 arg3 [V04,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06,T27] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp2 [V07,T24] ( 2, 4 ) long -> x0 "spilling helperCall"
-; V08 tmp3 [V08,T25] ( 2, 4 ) long -> x24 "spilling helperCall"
-; V09 tmp4 [V09,T17] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V10 tmp5 [V10,T02] ( 3, 6 ) long -> x23 "spilling helperCall"
-;* V11 tmp6 [V11,T28] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp7 [V12,T18] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V13 tmp8 [V13,T26] ( 2, 4 ) long -> x23 "spilling helperCall"
-; V14 tmp9 [V14,T03] ( 3, 6 ) long -> x24 "spilling helperCall"+; V06 tmp1 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V07 tmp2 [V07,T13] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V08 tmp3 [V08,T14] ( 2, 4 ) long -> x25 "spilling helperCall"
+; V09 tmp4 [V09,T05] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V10 tmp5 [V10,T15] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V11 tmp6 [V11,T16] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V12 tmp7 [V12,T06] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V13 tmp8 [V13,T17] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V14 tmp9 [V14,T18] ( 2, 4 ) long -> x25 "spilling helperCall" ; V15 tmp10 [V15,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V17 tmp12 [V17,T19] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V18 tmp13 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V21 tmp16 [V21,T23] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V22 cse0 [V22,T07] ( 4, 4 ) long -> x23 "CSE - aggressive"
-; V23 cse1 [V23,T13] ( 3, 3 ) long -> x24 "CSE - moderate"
-; V24 rat0 [V24,T14] ( 3, 4 ) long -> x23 "runtime lookup"
-; V25 rat1 [V25,T04] ( 3, 5.60) long -> x23 "fgMakeTemp is creating a new local variable"
-; V26 rat2 [V26,T15] ( 3, 4 ) long -> x24 "runtime lookup"
-; V27 rat3 [V27,T05] ( 3, 5.60) long -> x0 "spilling expr"
-; V28 rat4 [V28,T11] ( 3, 4.48) long -> x24 "fgMakeTemp is creating a new local variable"
-; V29 rat5 [V29,T16] ( 3, 4 ) long -> x0 "runtime lookup"
-; V30 rat6 [V30,T06] ( 3, 5.60) long -> x0 "spilling expr"
-; V31 rat7 [V31,T12] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T07] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V18 tmp13 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V19 tmp14 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V20 tmp15 [V20,T10] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V21 tmp16 [V21,T11] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x19, x1
mov x20, x2
; gcrRegs +[x20]
@@ -57,26 +48,27 @@ G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
mov x22, x4
; gcrRegs +[x22]- ;; size=40 bbWeight=1 PerfScore 7.50
-G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x23, [x0, #0x18]
- cbz x23, G_M2804_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M2804_IG03: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M2804_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M2804_IG04: ; bbWeight=0.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+ ;; size=44 bbWeight=1 PerfScore 8.50
+G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x23, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0 mov x0, x23- mov x24, x23 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -97,29 +89,20 @@ G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs -[x1-x2 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- ldr x0, [x19, #0x38]+ mov x0, x19 ; gcrRegs -[x0]- ldr x1, [x0, #0x10]
- cmp x1, #32
- ble G_M2804_IG08
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M2804_IG06: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x24, [x0, #0x20]
- cbz x24, G_M2804_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M2804_IG07: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M2804_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M2804_IG08: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x24, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x23+ mov x0, x25 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -140,33 +123,29 @@ G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs -[x1-x2 x21] +[x0]
mov x21, x0
; gcrRegs +[x21]- mov x23, x24
- ldr x0, [x19, #0x38]+ mov x0, x19 ; gcrRegs -[x0]- ldr x1, [x0, #0x10]
- cmp x1, #40
- ble G_M2804_IG12
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M2804_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x28]
- cbz x0, G_M2804_IG12
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M2804_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M2804_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M2804_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]- mov x0, x23+ mov x0, x24 ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -178,7 +157,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs +[x2]
mov x1, x21
; gcrRegs +[x1]- mov x0, x24+ mov x0, x23 ; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -190,7 +169,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; gcrRegs +[x2]
mov x1, x20
; gcrRegs +[x1]- mov x0, x24+ mov x0, x25 ; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -214,27 +193,28 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000
; byrRegs -[x14]
mov x0, x19
; gcrRegs +[x0]- ;; size=124 bbWeight=1 PerfScore 26.00
-G_M2804_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]+ ;; size=432 bbWeight=1 PerfScore 80.50
+G_M2804_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x25, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x50
ret lr- ;; size=20 bbWeight=1 PerfScore 5.00+ ;; size=24 bbWeight=1 PerfScore 7.00 -; Total bytes of code 452, prolog size 24, PerfScore 100.02, instruction count 113, allocated bytes for code 452 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)+; Total bytes of code 500, prolog size 28, PerfScore 96.00, instruction count 125, allocated bytes for code 500 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)- Code Words : 2+ Code Words : 3 Epilog Count : 1
E bit : 0
...
@@ -9,68 +9,94 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def ; V02 arg1 [V02,T02] ( 5, 5 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V04 tmp1 [V04,T25] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T22] ( 2, 4 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T23] ( 2, 4 ) long -> x22 "spilling helperCall"
-; V07 tmp4 [V07,T15] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x21 "spilling helperCall"
-;* V09 tmp6 [V09,T26] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp7 [V10,T16] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V11 tmp8 [V11,T24] ( 2, 4 ) long -> x24 "spilling helperCall"
-; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x23 "spilling helperCall"+; V04 tmp1 [V04,T10] ( 2, 4 ) long -> x21 "spilling helperCall"
+; V05 tmp2 [V05,T11] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V06 tmp3 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V08 tmp5 [V08,T13] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V09 tmp6 [V09,T14] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V11 tmp8 [V11,T15] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V12 tmp9 [V12,T16] ( 2, 4 ) long -> x25 "spilling helperCall" ; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V15 tmp12 [V15,T17] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V16 tmp13 [V16,T18] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V17 tmp14 [V17,T19] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V18 tmp15 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V19 tmp16 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V20 cse0 [V20,T08] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V21 cse1 [V21,T11] ( 3, 3 ) long -> x23 "CSE - moderate"
-; V22 rat0 [V22,T12] ( 3, 4 ) long -> x21 "runtime lookup"
-; V23 rat1 [V23,T05] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T13] ( 3, 4 ) long -> x23 "runtime lookup"
-; V25 rat3 [V25,T06] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T09] ( 3, 4.48) long -> x23 "fgMakeTemp is creating a new local variable"
-; V27 rat5 [V27,T14] ( 3, 4 ) long -> x0 "runtime lookup"
-; V28 rat6 [V28,T07] ( 3, 5.60) long -> x0 "spilling expr"
-; V29 rat7 [V29,T10] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V15 tmp12 [V15,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V16 tmp13 [V16,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V17 tmp14 [V17,T07] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M20173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x19, x1
mov x20, x2
; gcrRegs +[x20]- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x21, [x0, #0x10]
- cbz x21, G_M20173_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M20173_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M20173_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M20173_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ ;; size=36 bbWeight=1 PerfScore 7.50
+G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x21, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x22, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x21- mov x22, x21+ movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ mov x0, x22
+ ; gcrRegs -[x0]
+ movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #1 LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x1-x2] +[x0]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x0, x19
+ ; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x22, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0
+ mov x0, x23 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -91,72 +117,25 @@ G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1-x2] +[x0]
mov x22, x0
; gcrRegs +[x22]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M20173_IG08
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M20173_IG06: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x23, [x0, #0x18]
- cbz x23, G_M20173_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M20173_IG07: ; bbWeight=0.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- b G_M20173_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M20173_IG08: ; bbWeight=0.36, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x23, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M20173_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x21
- movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- ; gcrRegs -[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2] +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- mov x24, x23
- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #32
- ble G_M20173_IG12
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M20173_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x20]
- cbz x0, G_M20173_IG12
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M20173_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M20173_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M20173_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
@@ -170,18 +149,6 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]- mov x1, x21
- ; gcrRegs +[x1]
- mov x0, x23
- ; gcrRegs -[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2 x21] +[x0]
- mov x2, x0
- ; gcrRegs +[x2] mov x1, x22
; gcrRegs +[x1]
mov x0, x23
@@ -192,6 +159,18 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
ldr x3, [x3]
blr x3
; gcrRegs -[x1-x2 x22] +[x0]+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x21
+ ; gcrRegs +[x1]
+ mov x0, x25...
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x20 single-def
-; V01 TypeCtx [V01,T01] ( 5, 3.60) long -> x0 single-def
-; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x2 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>+; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x21 single-def
+; V01 TypeCtx [V01,T01] ( 5, 4.50) long -> x20 single-def
+; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]> ; V03 arg1 [V03,T00] ( 4, 7 ) byref -> x19 ld-addr-op single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -19,83 +19,80 @@
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref "field V03._exception (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._tag (fldOffset=0x10)" P-INDEP
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>-; V11 tmp7 [V11,T06] ( 2, 2 ) long -> x0 "argument with side effect"
-; V12 rat0 [V12,T05] ( 3, 2 ) long -> x0 "runtime lookup"
-; V13 rat1 [V13,T04] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V11 tmp7 [V11,T04] ( 2, 2 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
G_M63339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20]+ stp x21, x22, [sp, #0x30] mov fp, sp
str x0, [fp, #0x18]+ mov x20, x0
+ mov x22, x1
+ ; gcrRegs +[x22] mov x19, x2
; byrRegs +[x19]- mov x20, x8
- ; byrRegs +[x20]
- mov x2, x1
- ; gcrRegs +[x2]
- ;; size=28 bbWeight=1 PerfScore 5.00
-G_M63339_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz
- ldr w1, [x19, #0x10]
- cmp w1, #1
- beq G_M63339_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- ; gcrRegs -[x2]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M63339_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M63339_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
- mov x0, x2
- b G_M63339_IG06
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M63339_IG05: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref+ mov x21, x8
+ ; byrRegs +[x21]
+ ;; size=36 bbWeight=1 PerfScore 6.50
+G_M63339_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+ mov x0, x20 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ ldr w0, [x19, #0x10]
+ cmp w0, #1
+ beq G_M63339_IG05
+ ;; size=32 bbWeight=1 PerfScore 7.50
+G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+ ; gcrRegs -[x22]
+ mov x0, x20
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M63339_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref ldr x1, [x19]
; gcrRegs +[x1]- mov x8, x20+ mov x8, x21 ; byrRegs +[x8]
movz x2, #0xD1FFAB1E // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]- ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M63339_IG07: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=44 bbWeight=0.50 PerfScore 5.50
+G_M63339_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 br x2
; gcr arg pop 0- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63339_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref
- ; gcrRegs -[x1] +[x2]+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M63339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref
+ ; gcrRegs -[x1] +[x22] ; byrRegs -[x8 x19]- mov x0, x2+ mov x0, x22 ; gcrRegs +[x0]- mov x8, x20+ mov x8, x21 ; byrRegs +[x8]
mov x1, xzr- ldr x2, [x2]
- ; gcrRegs -[x2]+ ldr x2, [x22] ldr x2, [x2, #0x48]
ldr x2, [x2, #0x20]
;; size=24 bbWeight=0.50 PerfScore 5.25-G_M63339_IG09: ; bbWeight=0.50, epilog, nogc, extend+G_M63339_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 br x2
; gcr arg pop 0- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.00 -; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)+; Total bytes of code 168, prolog size 36, PerfScore 28.75, instruction count 42, allocated bytes for code 168 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -106,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 37 (0x00025) Actual length = 148 (0x000094)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,9 +114,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]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
E4 end
E4 end
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 138 | 115 | 3 | 20 | -6,112 | +28 |
benchmarks.run_pgo.osx.arm64.checked.mch | 291 | 248 | 10 | 33 | -18,812 | +88 |
benchmarks.run_tiered.osx.arm64.checked.mch | 254 | 218 | 2 | 34 | -17,072 | +24 |
coreclr_tests.run.osx.arm64.checked.mch | 102 | 70 | 30 | 2 | -376 | +200 |
libraries.crossgen2.osx.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.osx.arm64.checked.mch | 256 | 188 | 46 | 22 | -5,156 | +780 |
libraries_tests.run.osx.arm64.Release.mch | 144 | 134 | 3 | 7 | -10,720 | +12 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 185 | 134 | 12 | 39 | -7,300 | +308 |
realworld.run.osx.arm64.checked.mch | 358 | 324 | 15 | 19 | -17,808 | +472 |
1,728 | 1,431 | 121 | 176 | -83,356 | +1,912 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 5,045 | 3 | 5,042 | 10 (0.10%) | 4,157 (43.31%) |
benchmarks.run_pgo.osx.arm64.checked.mch | 16,644 | 15,001 | 1,643 | 5 (0.02%) | 6,798 (28.52%) |
benchmarks.run_tiered.osx.arm64.checked.mch | 14,882 | 13,053 | 1,829 | 6 (0.03%) | 5,088 (24.98%) |
coreclr_tests.run.osx.arm64.checked.mch | 1,292 | 1,087 | 205 | 0 (0.00%) | 1,495 (46.97%) |
libraries.crossgen2.osx.arm64.checked.mch | 8,173 | 10 | 8,163 | 13 (0.11%) | 2,899 (25.28%) |
libraries.pmi.osx.arm64.checked.mch | 12,006 | 0 | 12,006 | 1 (0.01%) | 4,130 (24.98%) |
libraries_tests.run.osx.arm64.Release.mch | 6,428 | 5,946 | 482 | 2 (0.02%) | 4,151 (37.82%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 5,290 | 0 | 5,290 | 3 (0.03%) | 4,000 (41.30%) |
realworld.run.osx.arm64.checked.mch | 9,273 | 1 | 9,272 | 4 (0.03%) | 4,955 (33.88%) |
79,033 | 35,101 | 43,932 | 44 (0.04%) | 37,673 (31.32%) |
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: 1030644 (overridden on cmd)
Total bytes of diff: 1024560 (overridden on cmd)
Total bytes of delta: -6084 (-0.59 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
20 : 2189.dasm (6.25 % of base)
4 : 7659.dasm (2.70 % of base)
4 : 7893.dasm (4.55 % of base)
Top file improvements (bytes):
-328 : 6071.dasm (-23.98 % of base)
-212 : 233.dasm (-30.99 % of base)
-212 : 729.dasm (-33.12 % of base)
-208 : 1985.dasm (-16.00 % of base)
-184 : 687.dasm (-26.14 % of base)
-184 : 237.dasm (-24.34 % of base)
-156 : 5357.dasm (-29.32 % of base)
-144 : 2851.dasm (-15.06 % of base)
-136 : 2090.dasm (-30.63 % of base)
-132 : 5598.dasm (-19.30 % of base)
-128 : 6175.dasm (-25.81 % of base)
-128 : 625.dasm (-18.71 % of base)
-128 : 2913.dasm (-27.12 % of base)
-100 : 5398.dasm (-24.04 % of base)
-100 : 1903.dasm (-20.49 % of base)
-100 : 202.dasm (-19.84 % of base)
-100 : 8506.dasm (-15.82 % of base)
-92 : 5394.dasm (-22.12 % of base)
-76 : 8072.dasm (-18.27 % of base)
-72 : 2298.dasm (-23.38 % of base)
48 total files with Code Size differences (45 improved, 3 regressed), 20 unchanged.
Top method regressions (bytes):
20 (6.25 % of base) : 2189.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
4 (2.70 % of base) : 7659.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
4 (4.55 % of base) : 7893.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
Top method improvements (bytes):
-328 (-23.98 % of base) : 6071.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-16.00 % of base) : 1985.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
-184 (-24.34 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-156 (-29.32 % of base) : 5357.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-144 (-15.06 % of base) : 2851.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
-136 (-30.63 % of base) : 2090.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.30 % of base) : 5598.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-128 (-27.12 % of base) : 2913.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-128 (-25.81 % of base) : 6175.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-128 (-18.71 % of base) : 625.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-15.82 % of base) : 8506.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
-100 (-20.49 % of base) : 1903.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-100 (-24.04 % of base) : 5398.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-100 (-19.84 % of base) : 202.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
-92 (-22.12 % of base) : 5394.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-76 (-18.27 % of base) : 8072.dasm - System.Threading.Tasks.Task:WhenAny[System.__Canon](System.__Canon,System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-72 (-20.69 % of base) : 9185.dasm - System.Linq.Enumerable:GroupBy[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
20 (6.25 % of base) : 2189.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
4 (4.55 % of base) : 7893.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (2.70 % of base) : 7659.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-52 (-30.95 % of base) : 8721.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 2090.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-156 (-29.32 % of base) : 5357.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-128 (-27.12 % of base) : 2913.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-52 (-27.08 % of base) : 1806.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-184 (-26.14 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-128 (-25.81 % of base) : 6175.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-72 (-25.00 % of base) : 1311.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-44 (-25.00 % of base) : 5866.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-44 (-24.44 % of base) : 1412.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-44 (-24.44 % of base) : 1314.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-24.04 % of base) : 5398.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-72 (-24.00 % of base) : 236.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 6071.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-44 (-23.91 % of base) : 7772.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-72 (-23.38 % of base) : 5356.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-72 (-23.38 % of base) : 2298.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
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: 2510584 (overridden on cmd)
Total bytes of diff: 2491860 (overridden on cmd)
Total bytes of delta: -18724 (-0.75 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
16 : 5316.dasm (10.53 % of base)
8 : 17580.dasm (6.06 % of base)
8 : 17884.dasm (6.06 % of base)
8 : 19759.dasm (6.06 % of base)
8 : 21052.dasm (6.06 % of base)
8 : 21594.dasm (6.06 % of base)
8 : 23985.dasm (6.06 % of base)
8 : 25769.dasm (6.06 % of base)
8 : 8638.dasm (6.06 % of base)
8 : 16183.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 1885.dasm (-43.85 % of base)
-428 : 624.dasm (-41.96 % of base)
-372 : 1810.dasm (-36.19 % of base)
-372 : 630.dasm (-35.36 % of base)
-332 : 22103.dasm (-28.92 % of base)
-316 : 3933.dasm (-38.54 % of base)
-316 : 12492.dasm (-37.44 % of base)
-296 : 6752.dasm (-38.14 % of base)
-268 : 2201.dasm (-40.36 % of base)
-260 : 1673.dasm (-27.66 % of base)
-260 : 3975.dasm (-39.88 % of base)
-260 : 16009.dasm (-35.71 % of base)
-240 : 265.dasm (-32.97 % of base)
-212 : 16066.dasm (-33.12 % of base)
-212 : 19966.dasm (-33.12 % of base)
-204 : 22033.dasm (-25.25 % of base)
-204 : 3952.dasm (-32.69 % of base)
-204 : 3959.dasm (-30.00 % of base)
-204 : 552.dasm (-30.18 % of base)
-204 : 9560.dasm (-23.50 % of base)
60 total files with Code Size differences (50 improved, 10 regressed), 23 unchanged.
Top method regressions (bytes):
16 (10.53 % of base) : 5316.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 17580.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 17884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19759.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21594.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23985.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25769.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8638.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-36.19 % of base) : 1810.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-332 (-28.92 % of base) : 22103.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
-316 (-38.54 % of base) : 3933.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 12492.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-38.14 % of base) : 6752.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-268 (-40.36 % of base) : 2201.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-260 (-39.88 % of base) : 3975.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
-260 (-35.71 % of base) : 16009.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1673.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 265.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 16066.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 19966.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-25.25 % of base) : 22033.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
-204 (-30.00 % of base) : 3959.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-23.50 % of base) : 9560.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
-204 (-32.69 % of base) : 3952.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-30.18 % of base) : 552.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
Top method regressions (percentages):
16 (10.53 % of base) : 5316.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 17580.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 17884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19759.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21594.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 23985.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25769.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8638.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-41.07 % of base) : 20606.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-268 (-40.36 % of base) : 2201.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-260 (-39.88 % of base) : 3975.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
-148 (-39.78 % of base) : 6286.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-38.98 % of base) : 11889.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-316 (-38.54 % of base) : 3933.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-38.33 % of base) : 12330.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-38.33 % of base) : 12812.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 2914.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-296 (-38.14 % of base) : 6752.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 12492.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-148 (-37.00 % of base) : 1871.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 3932.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 16674.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 10809.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-148 (-36.27 % of base) : 16357.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
-148 (-36.27 % of base) : 5495.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-372 (-36.19 % of base) : 1810.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
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: 2279232 (overridden on cmd)
Total bytes of diff: 2262184 (overridden on cmd)
Total bytes of delta: -17048 (-0.75 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
16 : 8975.dasm (10.53 % of base)
8 : 4906.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 624.dasm (-41.96 % of base)
-428 : 1885.dasm (-43.85 % of base)
-372 : 7551.dasm (-32.98 % of base)
-372 : 1812.dasm (-36.19 % of base)
-372 : 630.dasm (-35.36 % of base)
-316 : 8286.dasm (-37.44 % of base)
-316 : 3884.dasm (-38.54 % of base)
-296 : 3642.dasm (-38.14 % of base)
-260 : 1675.dasm (-27.66 % of base)
-260 : 7622.dasm (-39.88 % of base)
-260 : 10830.dasm (-40.37 % of base)
-260 : 7472.dasm (-35.71 % of base)
-240 : 265.dasm (-32.97 % of base)
-212 : 7504.dasm (-33.12 % of base)
-204 : 18351.dasm (-25.25 % of base)
-204 : 3844.dasm (-30.00 % of base)
-204 : 7626.dasm (-32.69 % of base)
-204 : 17440.dasm (-32.28 % of base)
-204 : 552.dasm (-30.18 % of base)
-184 : 1869.dasm (-30.87 % of base)
52 total files with Code Size differences (50 improved, 2 regressed), 27 unchanged.
Top method regressions (bytes):
16 (10.53 % of base) : 8975.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 4906.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-32.98 % of base) : 7551.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-372 (-35.36 % of base) : 630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-36.19 % of base) : 1812.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-38.54 % of base) : 3884.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 8286.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-38.14 % of base) : 3642.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-39.88 % of base) : 7622.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 10830.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-35.71 % of base) : 7472.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1675.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 265.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 7504.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-25.25 % of base) : 18351.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
-204 (-32.28 % of base) : 17440.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 3844.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-32.69 % of base) : 7626.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-30.18 % of base) : 552.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
-184 (-30.87 % of base) : 1869.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
Top method regressions (percentages):
16 (10.53 % of base) : 8975.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 4906.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-41.07 % of base) : 19453.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 10830.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-39.88 % of base) : 7622.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-148 (-39.78 % of base) : 4451.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-38.98 % of base) : 16916.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-316 (-38.54 % of base) : 3884.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-38.33 % of base) : 17323.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-38.33 % of base) : 10211.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 8579.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-296 (-38.14 % of base) : 3642.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 8286.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-148 (-37.00 % of base) : 1871.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 3883.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 10948.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 2752.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-148 (-36.27 % of base) : 12586.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
-148 (-36.27 % of base) : 2750.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-372 (-36.19 % of base) : 1812.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
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: 312480 (overridden on cmd)
Total bytes of diff: 312304 (overridden on cmd)
Total bytes of delta: -176 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
28 : 2515.dasm (9.86 % of base)
12 : 2213.dasm (7.89 % of base)
12 : 2245.dasm (8.33 % of base)
12 : 2495.dasm (6.82 % of base)
12 : 2505.dasm (6.98 % of base)
12 : 3122.dasm (6.12 % of base)
12 : 2060.dasm (7.89 % of base)
12 : 2425.dasm (7.14 % of base)
4 : 1967.dasm (3.70 % of base)
4 : 2355.dasm (3.70 % of base)
4 : 2405.dasm (3.70 % of base)
4 : 2445.dasm (3.70 % of base)
4 : 2455.dasm (3.70 % of base)
4 : 2485.dasm (3.70 % of base)
4 : 3092.dasm (2.63 % of base)
4 : 3094.dasm (2.63 % of base)
4 : 3096.dasm (2.63 % of base)
4 : 1960.dasm (3.70 % of base)
4 : 1979.dasm (3.70 % of base)
4 : 2295.dasm (3.70 % of base)
Top file improvements (bytes):
-36 : 1469.dasm (-15.79 % of base)
-36 : 100.dasm (-28.12 % of base)
-36 : 544.dasm (-15.79 % of base)
-4 : 2151.dasm (-3.70 % of base)
-4 : 2201.dasm (-3.57 % of base)
-4 : 2233.dasm (-3.57 % of base)
-4 : 2325.dasm (-3.03 % of base)
-4 : 1816.dasm (-3.70 % of base)
-4 : 1822.dasm (-3.57 % of base)
-4 : 1991.dasm (-3.70 % of base)
-4 : 2002.dasm (-3.70 % of base)
-4 : 2020.dasm (-3.70 % of base)
-4 : 2042.dasm (-3.57 % of base)
-4 : 2101.dasm (-3.70 % of base)
-4 : 2121.dasm (-3.70 % of base)
-4 : 2161.dasm (-3.70 % of base)
-4 : 2171.dasm (-3.57 % of base)
-4 : 1809.dasm (-3.70 % of base)
-4 : 1997.dasm (-3.70 % of base)
-4 : 2014.dasm (-3.70 % of base)
56 total files with Code Size differences (32 improved, 24 regressed), 2 unchanged.
Top method regressions (bytes):
28 (9.86 % of base) : 2515.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 2213.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (8.33 % of base) : 2245.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.12 % of base) : 3122.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.89 % of base) : 2060.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.14 % of base) : 2425.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.82 % of base) : 2495.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.98 % of base) : 2505.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 1960.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (2.63 % of base) : 3088.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 1967.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 2295.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2355.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (2.63 % of base) : 3092.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 2405.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2415.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2445.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2455.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (2.63 % of base) : 3094.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 1979.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
Top method improvements (bytes):
-36 (-28.12 % of base) : 100.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-36 (-15.79 % of base) : 1469.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)
-36 (-15.79 % of base) : 544.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)
-4 (-3.70 % of base) : 1809.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 2091.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2014.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.57 % of base) : 2181.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2020.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 2191.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2025.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.57 % of base) : 2201.dasm - NullableTest12:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2031.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.57 % of base) : 2042.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.57 % of base) : 2233.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2263.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2273.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 1816.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 2101.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.03 % of base) : 2325.dasm - NullableTest24:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.57 % of base) : 1822.dasm - NullableTest3:BoxUnboxToQ(System.Enum):ubyte (Tier0)
Top method regressions (percentages):
28 (9.86 % of base) : 2515.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (8.33 % of base) : 2245.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 2213.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 2060.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.14 % of base) : 2425.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.98 % of base) : 2505.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.82 % of base) : 2495.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.12 % of base) : 3122.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
4 (3.70 % of base) : 1960.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 1967.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 2295.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2355.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2405.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2415.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2445.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2455.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 1979.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 2465.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2475.dasm - NullableTest41:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 2485.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method improvements (percentages):
-36 (-28.12 % of base) : 100.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-36 (-15.79 % of base) : 1469.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)
-36 (-15.79 % of base) : 544.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)
-4 (-3.70 % of base) : 1809.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 2091.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2014.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 2020.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 2191.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2025.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 2031.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 2263.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2273.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 1816.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 2101.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2111.dasm - NullableTest3:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2121.dasm - NullableTest4:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 2131.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 1991.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 2141.dasm - NullableTest6:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 1997.dasm - NullableTest7:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
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: 1249200 (overridden on cmd)
Total bytes of diff: 1244824 (overridden on cmd)
Total bytes of delta: -4376 (-0.35 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
80 : 12069.dasm (29.85 % of base)
68 : 7298.dasm (35.42 % of base)
68 : 7318.dasm (35.42 % of base)
60 : 7320.dasm (25.86 % of base)
60 : 7302.dasm (25.86 % of base)
52 : 7296.dasm (39.39 % of base)
52 : 7316.dasm (39.39 % of base)
40 : 7304.dasm (17.24 % of base)
32 : 6939.dasm (11.76 % of base)
24 : 7322.dasm (17.14 % of base)
24 : 8774.dasm (5.41 % of base)
24 : 8781.dasm (5.66 % of base)
24 : 6937.dasm (10.71 % of base)
20 : 6941.dasm (6.58 % of base)
16 : 12035.dasm (9.76 % of base)
8 : 8760.dasm (2.13 % of base)
8 : 8767.dasm (2.17 % of base)
8 : 7300.dasm (5.56 % of base)
4 : 4547.dasm (5.56 % of base)
4 : 4548.dasm (4.55 % of base)
Top file improvements (bytes):
-108 : 12031.dasm (-25.47 % of base)
-108 : 12222.dasm (-25.47 % of base)
-80 : 8011.dasm (-23.81 % of base)
-72 : 12097.dasm (-13.95 % of base)
-72 : 12146.dasm (-13.95 % of base)
-72 : 12116.dasm (-13.95 % of base)
-72 : 12126.dasm (-13.95 % of base)
-72 : 12136.dasm (-13.95 % of base)
-72 : 7353.dasm (-19.35 % of base)
-68 : 12236.dasm (-19.54 % of base)
-64 : 1691.dasm (-11.03 % of base)
-60 : 12122.dasm (-14.15 % of base)
-60 : 12132.dasm (-14.15 % of base)
-60 : 12134.dasm (-14.15 % of base)
-60 : 12144.dasm (-14.15 % of base)
-60 : 12105.dasm (-14.15 % of base)
-60 : 12124.dasm (-14.15 % of base)
-60 : 12142.dasm (-14.15 % of base)
-60 : 12154.dasm (-14.15 % of base)
-60 : 93.dasm (-14.15 % of base)
77 total files with Code Size differences (38 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
80 (29.85 % of base) : 12069.dasm - System.Numerics.Vector:ConditionalSelect[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7318.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7298.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7320.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7302.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
52 (39.39 % of base) : 7316.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
52 (39.39 % of base) : 7296.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
40 (17.24 % of base) : 7304.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
32 (11.76 % of base) : 6939.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
24 (10.71 % of base) : 6937.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
24 (17.14 % of base) : 7322.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
24 (5.41 % of base) : 8774.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
24 (5.66 % of base) : 8781.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
20 (6.58 % of base) : 6941.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
16 (9.76 % of base) : 12035.dasm - System.Numerics.Vector:AndNot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
8 (5.56 % of base) : 7300.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
8 (2.13 % of base) : 8760.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
8 (2.17 % of base) : 8767.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
4 (5.56 % of base) : 4356.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
4 (5.56 % of base) : 4406.dasm - System.Convert:ToByte(System.Object):ubyte (FullOpts)
Top method improvements (bytes):
-108 (-25.47 % of base) : 12031.dasm - System.Numerics.Vector:Abs[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-108 (-25.47 % of base) : 12222.dasm - System.Numerics.Vector:SquareRoot[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-80 (-23.81 % of base) : 8011.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
-72 (-19.35 % of base) : 7353.dasm - System.MemoryExtensions:Sort[System.__Canon,System.Nullable`1[int]](System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]],System.Comparison`1[System.__Canon]) (FullOpts)
-72 (-13.95 % of base) : 12097.dasm - System.Numerics.Vector:Equals[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-72 (-13.95 % of base) : 12116.dasm - System.Numerics.Vector:GreaterThan[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-72 (-13.95 % of base) : 12126.dasm - System.Numerics.Vector:GreaterThanOrEqual[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-72 (-13.95 % of base) : 12136.dasm - System.Numerics.Vector:LessThan[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-72 (-13.95 % of base) : 12146.dasm - System.Numerics.Vector:LessThanOrEqual[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-68 (-19.54 % of base) : 12236.dasm - System.Numerics.Vector:Sum[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
-64 (-11.03 % of base) : 1691.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
-60 (-14.15 % of base) : 93.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
-60 (-14.15 % of base) : 12105.dasm - System.Numerics.Vector:EqualsAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12122.dasm - System.Numerics.Vector:GreaterThanAll[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12124.dasm - System.Numerics.Vector:GreaterThanAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12132.dasm - System.Numerics.Vector:GreaterThanOrEqualAll[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12134.dasm - System.Numerics.Vector:GreaterThanOrEqualAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12142.dasm - System.Numerics.Vector:LessThanAll[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12144.dasm - System.Numerics.Vector:LessThanAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
-60 (-14.15 % of base) : 12154.dasm - System.Numerics.Vector:LessThanOrEqualAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
Top method regressions (percentages):
52 (39.39 % of base) : 7316.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
52 (39.39 % of base) : 7296.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7318.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7298.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
80 (29.85 % of base) : 12069.dasm - System.Numerics.Vector:ConditionalSelect[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7320.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7302.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
40 (17.24 % of base) : 7304.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
24 (17.14 % of base) : 7322.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
32 (11.76 % of base) : 6939.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
24 (10.71 % of base) : 6937.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
16 (9.76 % of base) : 12035.dasm - System.Numerics.Vector:AndNot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
20 (6.58 % of base) : 6941.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
24 (5.66 % of base) : 8781.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
4 (5.56 % of base) : 4356.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
4 (5.56 % of base) : 4406.dasm - System.Convert:ToByte(System.Object):ubyte (FullOpts)
4 (5.56 % of base) : 4372.dasm - System.Convert:ToChar(System.Object):ushort (FullOpts)
4 (5.56 % of base) : 4547.dasm - System.Convert:ToDouble(System.Object):double (FullOpts)
4 (5.56 % of base) : 4423.dasm - System.Convert:ToInt16(System.Object):short (FullOpts)
4 (5.56 % of base) : 4459.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
Top method improvements (percentages):
-24 (-27.27 % of base) : 10636.dasm - System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)
-44 (-26.19 % of base) : 12243.dasm - System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
-108 (-25.47 % of base) : 12031.dasm - System.Numerics.Vector:Abs[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-108 (-25.47 % of base) : 12222.dasm - System.Numerics.Vector:SquareRoot[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-24 (-25.00 % of base) : 12162.dasm - System.Numerics.Vector:LoadUnsafe[System.__Canon](byref):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-24 (-25.00 % of base) : 10643.dasm - System.Tuple:Create[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
-20 (-25.00 % of base) : 10758.dasm - System.TupleExtensions:ToTuple[System.__Canon,System.Nullable`1[int]](System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
-48 (-24.49 % of base) : 1485.dasm - System.Array:AsReadOnly[System.__Canon](System.__Canon[]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-24 (-24.00 % of base) : 2556.dasm - System.GC:AllocateArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
-24 (-24.00 % of base) : 12037.dasm - System.Numerics.Vector:As[System.__Canon,System.Nullable`1[int]](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.Nullable`1[int]] (FullOpts)
-44 (-23.91 % of base) : 11600.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
-80 (-23.81 % of base) : 8011.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
-20 (-22.73 % of base) : 12156.dasm - System.Numerics.Vector:Load[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-20 (-22.73 % of base) : 12160.dasm - System.Numerics.Vector:LoadAlignedNonTemporal[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-20 (-22.73 % of base) : 10756.dasm - System.TupleExtensions:ToTuple[System.__Canon](System.ValueTuple`1[System.__Canon]):System.Tuple`1[System.__Canon] (FullOpts)
-20 (-22.73 % of base) : 10752.dasm - System.TupleExtensions:ToValueTuple[System.__Canon](System.Tuple`1[System.__Canon]):System.ValueTuple`1[System.__Canon] (FullOpts)
-52 (-22.41 % of base) : 7367.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
-52 (-22.41 % of base) : 7326.dasm - System.MemoryExtensions:Overlaps[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (FullOpts)
-44 (-21.57 % of base) : 7324.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts)
-24 (-21.43 % of base) : 12230.dasm - System.Numerics.Vector:StoreUnsafe[System.__Canon](System.Numerics.Vector`1[System.__Canon],byref) (FullOpts)
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: 1052488 (overridden on cmd)
Total bytes of diff: 1041780 (overridden on cmd)
Total bytes of delta: -10708 (-1.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
4 : 8747.dasm (0.83 % of base)
4 : 3543.dasm (1.64 % of base)
4 : 3824.dasm (1.64 % of base)
Top file improvements (bytes):
-428 : 25.dasm (-43.85 % of base)
-428 : 20.dasm (-41.96 % of base)
-372 : 115.dasm (-36.19 % of base)
-372 : 947.dasm (-35.36 % of base)
-316 : 6203.dasm (-38.54 % of base)
-296 : 1549.dasm (-39.78 % of base)
-260 : 3853.dasm (-40.37 % of base)
-260 : 975.dasm (-27.66 % of base)
-260 : 121.dasm (-40.37 % of base)
-260 : 2468.dasm (-43.92 % of base)
-204 : 7306.dasm (-36.43 % of base)
-204 : 1190.dasm (-30.18 % of base)
-184 : 1813.dasm (-15.44 % of base)
-184 : 7296.dasm (-39.32 % of base)
-184 : 990.dasm (-31.72 % of base)
-148 : 90.dasm (-36.27 % of base)
-148 : 22.dasm (-33.94 % of base)
-148 : 6.dasm (-39.78 % of base)
-148 : 6202.dasm (-36.63 % of base)
-148 : 999.dasm (-30.83 % of base)
67 total files with Code Size differences (64 improved, 3 regressed), 7 unchanged.
Top method regressions (bytes):
4 (0.83 % of base) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
4 (1.64 % of base) : 3824.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
4 (1.64 % of base) : 3543.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
Top method improvements (bytes):
-428 (-41.96 % of base) : 20.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 25.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 947.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-36.19 % of base) : 115.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-38.54 % of base) : 6203.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 1549.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 3853.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 121.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-27.66 % of base) : 975.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-260 (-43.92 % of base) : 2468.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-204 (-36.43 % of base) : 7306.dasm - System.Dynamic.Utils.ExpressionUtils:SameElements[System.__Canon](byref,System.Collections.Generic.IReadOnlyList`1[System.__Canon]):ubyte (Tier0)
-204 (-30.18 % of base) : 1190.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-184 (-39.32 % of base) : 7296.dasm - System.Dynamic.Utils.ExpressionUtils:ReturnReadOnly[System.__Canon](byref):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-184 (-31.72 % of base) : 990.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-184 (-15.44 % of base) : 1813.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-148 (-39.78 % of base) : 6.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-148 (-30.83 % of base) : 999.dasm - System.Linq.Enumerable:GroupBy[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-33.94 % of base) : 22.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 6202.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.27 % of base) : 90.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
Top method regressions (percentages):
4 (1.64 % of base) : 3824.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
4 (1.64 % of base) : 3543.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
4 (0.83 % of base) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
Top method improvements (percentages):
-260 (-43.92 % of base) : 2468.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-428 (-43.85 % of base) : 25.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 20.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 3853.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 121.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-296 (-39.78 % of base) : 1549.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-148 (-39.78 % of base) : 6.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-184 (-39.32 % of base) : 7296.dasm - System.Dynamic.Utils.ExpressionUtils:ReturnReadOnly[System.__Canon](byref):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-92 (-38.98 % of base) : 6835.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-316 (-38.54 % of base) : 6203.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-37.70 % of base) : 2133.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon) (Tier0)
-92 (-37.70 % of base) : 4440.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-92 (-37.70 % of base) : 1017.dasm - Xunit.Sdk.CollectionExtensions:CastOrToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-92 (-37.10 % of base) : 1800.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon],Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref,byref) (Tier0)
-148 (-36.63 % of base) : 6202.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 1189.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 1137.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-204 (-36.43 % of base) : 7306.dasm - System.Dynamic.Utils.ExpressionUtils:SameElements[System.__Canon](byref,System.Collections.Generic.IReadOnlyList`1[System.__Canon]):ubyte (Tier0)
-148 (-36.27 % of base) : 90.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-372 (-36.19 % of base) : 115.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
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: 1037508 (overridden on cmd)
Total bytes of diff: 1030516 (overridden on cmd)
Total bytes of delta: -6992 (-0.67 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
68 : 6724.dasm (8.99 % of base)
64 : 4141.dasm (5.39 % of base)
48 : 7257.dasm (16.67 % of base)
24 : 5869.dasm (23.08 % of base)
24 : 6579.dasm (31.58 % of base)
24 : 3002.dasm (6.59 % of base)
20 : 5919.dasm (16.13 % of base)
20 : 69.dasm (6.25 % of base)
4 : 9970.dasm (3.45 % of base)
4 : 4721.dasm (3.45 % of base)
4 : 5915.dasm (3.03 % of base)
4 : 8574.dasm (1.89 % of base)
Top file improvements (bytes):
-328 : 3162.dasm (-23.98 % of base)
-328 : 993.dasm (-22.47 % of base)
-212 : 3518.dasm (-12.62 % of base)
-212 : 10.dasm (-30.99 % of base)
-212 : 13.dasm (-33.12 % of base)
-200 : 3169.dasm (-19.69 % of base)
-184 : 481.dasm (-24.34 % of base)
-184 : 67.dasm (-26.14 % of base)
-176 : 3411.dasm (-27.85 % of base)
-160 : 750.dasm (-17.62 % of base)
-156 : 4608.dasm (-21.91 % of base)
-136 : 6570.dasm (-18.68 % of base)
-136 : 2291.dasm (-30.63 % of base)
-132 : 512.dasm (-19.76 % of base)
-128 : 494.dasm (-18.71 % of base)
-128 : 860.dasm (-27.12 % of base)
-128 : 9280.dasm (-17.88 % of base)
-100 : 634.dasm (-21.93 % of base)
-100 : 2187.dasm (-24.04 % of base)
-96 : 3543.dasm (-12.83 % of base)
60 total files with Code Size differences (48 improved, 12 regressed), 25 unchanged.
Top method regressions (bytes):
68 (8.99 % of base) : 6724.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
64 (5.39 % of base) : 4141.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
48 (16.67 % of base) : 7257.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
24 (23.08 % of base) : 5869.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
24 (31.58 % of base) : 6579.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
24 (6.59 % of base) : 3002.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
20 (16.13 % of base) : 5919.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
4 (1.89 % of base) : 8574.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.03 % of base) : 5915.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
4 (3.45 % of base) : 4721.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.45 % of base) : 9970.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-328 (-22.47 % of base) : 993.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 3162.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-212 (-12.62 % of base) : 3518.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-200 (-19.69 % of base) : 3169.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 481.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-176 (-27.85 % of base) : 3411.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-160 (-17.62 % of base) : 750.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-156 (-21.91 % of base) : 4608.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-136 (-18.68 % of base) : 6570.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
-136 (-30.63 % of base) : 2291.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.76 % of base) : 512.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
-128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-128 (-17.88 % of base) : 9280.dasm - System.Linq.Enumerable:TryGetSingle[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]](System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]],byref):Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon] (FullOpts)
-128 (-18.71 % of base) : 494.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-24.04 % of base) : 2187.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-100 (-21.93 % of base) : 634.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-96 (-12.83 % of base) : 3543.dasm - Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:UpdateStates[System.ValueTuple`2[System.__Canon,ubyte]](System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,ubyte],System.__Canon],System.ValueTuple`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:this (FullOpts)
Top method regressions (percentages):
24 (31.58 % of base) : 6579.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
24 (23.08 % of base) : 5869.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
48 (16.67 % of base) : 7257.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
20 (16.13 % of base) : 5919.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
68 (8.99 % of base) : 6724.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
24 (6.59 % of base) : 3002.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
64 (5.39 % of base) : 4141.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
4 (3.45 % of base) : 4721.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.45 % of base) : 9970.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.03 % of base) : 5915.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
4 (1.89 % of base) : 8574.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-24 (-31.58 % of base) : 2227.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 2291.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-72 (-30.51 % of base) : 6314.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-176 (-27.85 % of base) : 3411.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-44 (-26.19 % of base) : 2363.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-72 (-26.09 % of base) : 5888.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
-72 (-25.71 % of base) : 3270.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
-72 (-25.00 % of base) : 50.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-44 (-24.44 % of base) : 3248.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
-44 (-24.44 % of base) : 601.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 481.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-52 (-24.07 % of base) : 4338.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-100 (-24.04 % of base) : 2187.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-24 (-24.00 % of base) : 2407.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
-72 (-24.00 % of base) : 12.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 3162.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
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: 1692100 (overridden on cmd)
Total bytes of diff: 1674764 (overridden on cmd)
Total bytes of delta: -17336 (-1.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
124 : 6297.dasm (12.55 % of base)
64 : 14835.dasm (5.39 % of base)
48 : 5948.dasm (10.62 % of base)
48 : 5959.dasm (10.62 % of base)
48 : 5969.dasm (10.81 % of base)
48 : 5972.dasm (10.62 % of base)
20 : 9004.dasm (13.51 % of base)
20 : 13455.dasm (6.10 % of base)
16 : 5896.dasm (8.51 % of base)
8 : 2148.dasm (4.26 % of base)
8 : 10734.dasm (5.88 % of base)
8 : 10462.dasm (3.03 % of base)
4 : 12013.dasm (5.56 % of base)
4 : 4786.dasm (0.98 % of base)
4 : 2383.dasm (1.59 % of base)
Top file improvements (bytes):
-328 : 3338.dasm (-24.33 % of base)
-328 : 9657.dasm (-29.29 % of base)
-228 : 8940.dasm (-28.22 % of base)
-212 : 729.dasm (-33.12 % of base)
-212 : 233.dasm (-30.99 % of base)
-208 : 6132.dasm (-23.01 % of base)
-208 : 7611.dasm (-23.42 % of base)
-200 : 5213.dasm (-11.79 % of base)
-188 : 12514.dasm (-23.86 % of base)
-184 : 237.dasm (-24.34 % of base)
-184 : 687.dasm (-26.14 % of base)
-172 : 5315.dasm (-28.48 % of base)
-172 : 8323.dasm (-22.63 % of base)
-172 : 9656.dasm (-18.53 % of base)
-164 : 5010.dasm (-22.04 % of base)
-160 : 13372.dasm (-17.62 % of base)
-152 : 9658.dasm (-14.02 % of base)
-144 : 9985.dasm (-24.16 % of base)
-144 : 8487.dasm (-18.09 % of base)
-144 : 8290.dasm (-20.11 % of base)
70 total files with Code Size differences (55 improved, 15 regressed), 19 unchanged.
Top method regressions (bytes):
124 (12.55 % of base) : 6297.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
64 (5.39 % of base) : 14835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
48 (10.81 % of base) : 5969.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5972.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5959.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5948.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
20 (13.51 % of base) : 9004.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
20 (6.10 % of base) : 13455.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
16 (8.51 % of base) : 5896.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
8 (3.03 % of base) : 10462.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
8 (4.26 % of base) : 2148.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (5.88 % of base) : 10734.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (0.98 % of base) : 4786.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (1.59 % of base) : 2383.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (5.56 % of base) : 12013.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
Top method improvements (bytes):
-328 (-29.29 % of base) : 9657.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-328 (-24.33 % of base) : 3338.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-228 (-28.22 % of base) : 8940.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-23.01 % of base) : 6132.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-208 (-23.42 % of base) : 7611.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
-200 (-11.79 % of base) : 5213.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-188 (-23.86 % of base) : 12514.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-24.34 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-172 (-22.63 % of base) : 8323.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-172 (-18.53 % of base) : 9656.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-172 (-28.48 % of base) : 5315.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-164 (-22.04 % of base) : 5010.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-160 (-17.62 % of base) : 13372.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-152 (-14.02 % of base) : 9658.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-144 (-18.09 % of base) : 8487.dasm - FSharp.Compiler.PatternMatchCompilation:chooseSimultaneousEdgeSet[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-144 (-20.11 % of base) : 8290.dasm - Microsoft.FSharp.Primitives.Basics.List:mapi2[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-144 (-24.16 % of base) : 9985.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3ToFreshConsTail[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]) (FullOpts)
Top method regressions (percentages):
20 (13.51 % of base) : 9004.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
124 (12.55 % of base) : 6297.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
48 (10.81 % of base) : 5969.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5972.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5959.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5948.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
16 (8.51 % of base) : 5896.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
20 (6.10 % of base) : 13455.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
8 (5.88 % of base) : 10734.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (5.56 % of base) : 12013.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
64 (5.39 % of base) : 14835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
8 (4.26 % of base) : 2148.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (3.03 % of base) : 10462.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
4 (1.59 % of base) : 2383.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (0.98 % of base) : 4786.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (percentages):
-60 (-33.33 % of base) : 8574.dasm - FSharp.Compiler.NameResolution:CollectResults2[System.__Canon,System.__Canon](FSharp.Compiler.NameResolution+ResultCollectionSettings,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]] (FullOpts)
-212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-60 (-32.61 % of base) : 10466.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 10962.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-56 (-30.43 % of base) : 7550.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-100 (-29.41 % of base) : 4804.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-100 (-29.41 % of base) : 5053.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-80 (-29.41 % of base) : 5727.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
-80 (-29.41 % of base) : 9862.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-328 (-29.29 % of base) : 9657.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-172 (-28.48 % of base) : 5315.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-100 (-28.41 % of base) : 9036.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-228 (-28.22 % of base) : 8940.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-80 (-28.17 % of base) : 4796.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 5311.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 9998.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:toSeq[System.__Canon,System.__Canon](Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-28.12 % of base) : 4676.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-28.12 % of base) : 10459.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIEnumerator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-72 (-28.12 % of base) : 5051.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
Diffs are based on 80,760 contexts (27,005 MinOpts, 53,755 FullOpts).
MISSED contexts: base: 223 (0.17%), diff: 49,330 (36.80%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.arm64.checked.mch | 931,552 | -5,692 |
benchmarks.run_pgo.windows.arm64.checked.mch | 2,407,116 | -20,412 |
benchmarks.run_tiered.windows.arm64.checked.mch | 2,106,448 | -17,624 |
coreclr_tests.run.windows.arm64.checked.mch | 171,896 | -176 |
libraries.pmi.windows.arm64.checked.mch | 1,252,856 | -10,348 |
libraries_tests.run.windows.arm64.Release.mch | 615,412 | -20,616 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 1,045,188 | -7,168 |
realworld.run.windows.arm64.checked.mch | 1,675,344 | -17,092 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.windows.arm64.checked.mch | 1,882,192 | -16,236 |
benchmarks.run_tiered.windows.arm64.checked.mch | 1,874,596 | -15,612 |
libraries_tests.run.windows.arm64.Release.mch | 397,116 | -8,336 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.arm64.checked.mch | 931,452 | -5,692 |
benchmarks.run_pgo.windows.arm64.checked.mch | 524,924 | -4,176 |
benchmarks.run_tiered.windows.arm64.checked.mch | 231,852 | -2,012 |
coreclr_tests.run.windows.arm64.checked.mch | 171,896 | -176 |
libraries.pmi.windows.arm64.checked.mch | 1,252,856 | -10,348 |
libraries_tests.run.windows.arm64.Release.mch | 218,296 | -12,280 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 1,045,188 | -7,168 |
realworld.run.windows.arm64.checked.mch | 1,675,244 | -17,092 |
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect"
+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
@@ -33,22 +28,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41289_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M41289_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]
@@ -59,27 +44,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M41289_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M41289_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M41289_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY add x1, fp, #16 // [V01 arg0]
mov x2, x20
; gcrRegs +[x2]
@@ -89,14 +59,14 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20] +[x0]- ;; size=28 bbWeight=1 PerfScore 6.50
-G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=96 bbWeight=1 PerfScore 19.00
+G_M41289_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 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)+ Function Length : 33 (0x00021) Actual length = 132 (0x000084) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,22 +7,17 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
mov w21, w2
;; size=32 bbWeight=1 PerfScore 6.00-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M26687_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
mov w2, w21
@@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x1]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M26687_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M26687_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=88 bbWeight=1 PerfScore 17.50
+G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,68 +7,39 @@
; No matching PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel>
-; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> x19 single-def+; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel>
+; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03,T05] ( 3, 4 ) long -> x21 "spilling helperCall"+; V03 tmp1 [V03,T03] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp3 [V05,T08] ( 2, 4 ) long -> x22 "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V07 rat0 [V07,T01] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-; V08 rat1 [V08,T06] ( 3, 4 ) long -> x22 "runtime lookup"
-; V09 rat2 [V09,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V10 rat3 [V10,T04] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"+; V05 tmp3 [V05,T04] ( 2, 4 ) long -> x19 "argument with side effect"
+; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M14728_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, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x20, x0
; gcrRegs +[x20]
mov x19, x1
;; size=28 bbWeight=1 PerfScore 5.50-G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x21, [x0, #0x10]
- cbz x21, G_M14728_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M14728_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M14728_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M14728_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x21, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M14728_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M14728_IG08
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M14728_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x22, [x0, #0x18]
- cbz x22, G_M14728_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M14728_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M14728_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M14728_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x22, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY
+ mov x19, x0 mov x0, x20
; gcrRegs +[x0]
mov x1, x21
@@ -81,19 +52,19 @@ G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x20]
mov x1, x0
; gcrRegs +[x1]- mov x0, x22+ mov x0, x19 ; gcrRegs -[x0]- bl CORINFO_HELP_ISINSTANCEOFINTERFACE+ bl CORINFO_HELP_INITINSTCLASS ; gcrRegs -[x1] +[x0]- ;; size=44 bbWeight=1 PerfScore 9.00
-G_M14728_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40+ ;; size=92 bbWeight=1 PerfScore 16.00
+G_M14728_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30 ret lr- ;; size=16 bbWeight=1 PerfScore 4.00+ ;; size=16 bbWeight=1 PerfScore 5.00 -; Total bytes of code 180, prolog size 20, PerfScore 39.60, instruction count 45, allocated bytes for code 180 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 26.50, instruction count 34, allocated bytes for code 136 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -104,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -112,10 +83,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]!
- E4 end+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
E4 end
@@ -32,7 +32,7 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_CHKCASTINTERFACE+ bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x19
@@ -40,8 +40,9 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32+ ldr wzr, [x0] ldr x2, [x11]- ;; size=40 bbWeight=0.50 PerfScore 4.00+ ;; size=44 bbWeight=0.50 PerfScore 5.50 G_M21263_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -58,7 +59,7 @@ G_M21263_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +70,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -28,15 +28,16 @@ G_M50435_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_CHKCASTINTERFACE+ bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
mov x1, xzr+ ldr wzr, [x0] ldr x2, [x11]- ;; size=40 bbWeight=0.50 PerfScore 4.00+ ;; size=44 bbWeight=0.50 PerfScore 5.50 G_M50435_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x2
@@ -51,7 +52,7 @@ G_M50435_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 72, prolog size 8, PerfScore 8.75, instruction count 18, allocated bytes for code 72 (MethodHash=b1213afc) for method System.Convert:ToInt32(System.Object):int (FullOpts)+; Total bytes of code 76, prolog size 8, PerfScore 10.25, instruction count 19, allocated bytes for code 76 (MethodHash=b1213afc) for method System.Convert:ToInt32(System.Object):int (FullOpts) ; ============================================================
Unwind Info:
@@ -62,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 18 (0x00012) Actual length = 72 (0x000048)+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[System.ValueTuple
2[System.Canon,System.Canon]]):System.ValueTuple`2[System.Canon,System.__Canon]@@ -8,33 +8,26 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> ; V02 loc0 [V02 ] ( 1, 1 ) struct (128) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect"
-; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect"
-; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect"
-; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup"
-; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect"
+; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect"
+; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 408
@@ -60,23 +53,20 @@ G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
;; size=76 bbWeight=1 PerfScore 15.00-G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M13440_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M13440_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M13440_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M13440_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY add x1, fp, #0xD1FFAB1E // [V02 loc0]+ mov x0, x21 mov w2, #8
movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon]](byref,int):System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]
movk x3, #0xD1FFAB1E LSL #16
@@ -88,29 +78,13 @@ G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0]
str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8]
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]- ldr x0, [x19, #0x38]
- ; byrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M13440_IG08
- ;; size=60 bbWeight=1 PerfScore 18.00
-G_M13440_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x0, #0x18]
- cbz x21, G_M13440_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13440_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M13440_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13440_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x21, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x1, x21+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
mov x2, x20
; gcrRegs +[x2]
@@ -120,7 +94,12 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20]- mov x1, x21+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray():System.ValueTuple`2[System.__Canon,System.__Canon][]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -128,27 +107,32 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- mov x19, x0
- ; gcrRegs +[x19]
- mov x1, x21
- add x0, fp, #24 // [V03 loc1]+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov x0, x19 ; gcrRegs -[x0]+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:Dispose():this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2- mov x0, x19+ mov x0, x20 ; gcrRegs +[x0]- ;; size=96 bbWeight=1 PerfScore 21.00
-G_M13440_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=248 bbWeight=1 PerfScore 47.50
+G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0xD1FFAB1E]
ldp x19, x20, [sp, #0xD1FFAB1E]
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts) ; ============================================================
Unwind Info:
@@ -159,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 80 (0x00050) Actual length = 320 (0x000140)+ Function Length : 85 (0x00055) Actual length = 340 (0x000154) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M34046_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M34046_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov x1, xzr
mov w2, wzr
@@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=32 bbWeight=1 PerfScore 8.50
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 14.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -65,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Instrumented Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T04] ( 3, 2.57) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.69) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.57) byref -> x19 single-def+; V00 this [V00,T04] ( 3, 2.57) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4.14) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.57) byref -> x20 single-def ; V03 loc0 [V03,T02] ( 7, 5.29) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T03] ( 4, 4.57) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T03] ( 4, 4.57) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 2.29) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 3.20) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.57, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.57 PerfScore 4.00
-G_M58319_IG04: ; bbWeight=0.46, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.46 PerfScore 0.46
-G_M58319_IG05: ; bbWeight=0.11, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.11 PerfScore 0.34
-G_M58319_IG06: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.57 PerfScore 4.00
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.57 PerfScore 7.43
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 23.30, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 21.43, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.19) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.23) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.19) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.19) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.39) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.19) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.78) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.56) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.56) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 0.78) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.09) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.19, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.19 PerfScore 1.36
-G_M58319_IG04: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06: ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.19 PerfScore 1.36
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.19 PerfScore 2.53
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 17.49, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 16.53, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
@@ -9,84 +9,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.17) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.20) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.17) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.17) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.34) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.17) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.68) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.36) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.36) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 0.68) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 0.95) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.17, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.17 PerfScore 1.19
-G_M58319_IG04: ; bbWeight=0.14, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.14 PerfScore 0.14
-G_M58319_IG05: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.03 PerfScore 0.10
-G_M58319_IG06: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.17 PerfScore 1.19
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.17 PerfScore 2.21
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 17.11, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 16.21, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -97,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +99,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]!+ 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]!
+ E4 end E4 end
E4 end
@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M34046_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x18]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M34046_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
mov x1, xzr
mov w2, wzr
@@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs +[x0]- ;; size=32 bbWeight=1 PerfScore 8.50
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 14.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -65,7 +50,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x20] // [V00 TypeCtx]
str x1, [fp, #0x18] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M53804_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x10] // [V03 tmp1]
- b G_M53804_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x10] // [V03 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -67,7 +52,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x30] // [V00 TypeCtx]
str x1, [fp, #0x28] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M56297_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V04 tmp1]
- b G_M56297_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V04 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x2, fp, #32 // [V02 loc0]
ldr x0, [fp, #0x18] // [V04 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)+ Function Length : 21 (0x00015) Actual length = 84 (0x000054) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -35,9 +35,11 @@ G_M31041_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #0xD1FFAB1E- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -61,9 +63,11 @@ G_M31041_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #0xD1FFAB1E- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -85,7 +89,7 @@ G_M31041_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
; gcr arg pop 0
str x0, [fp, #0x28] // [V06 tmp1]
@@ -117,9 +121,11 @@ G_M31041_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #0xD1FFAB1E- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -8,84 +8,78 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x19 single-def+; V00 this [V00,T03] ( 3, 2.50) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x20 single-def ; V03 loc0 [V03,T02] ( 7, 5 ) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 2 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 2.80) long -> x0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M58319_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, #-0x40]!
+ stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30] mov fp, sp- str x1, [fp, #0x10]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x2
- ; byrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x19]+ str x1, [fp, #0x18]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x19, x1
+ mov x20, x2
+ ; byrRegs +[x20]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+ ldr x0, [x20] ; gcrRegs +[x0]- cbnz x0, G_M58319_IG07+ cbnz x0, G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 4.00-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref ; gcrRegs -[x0]- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M58319_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- mov x21, x0
- ; gcrRegs +[x21]
- add x14, x21, #16+ mov x22, x0
+ ; gcrRegs +[x22]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x20]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]
mov x0, x19+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x20 ; byrRegs +[x0]- mov x1, x21+ mov x1, x22 ; gcrRegs +[x1]
mov x2, xzr
bl <unknown method>
; gcrRegs -[x1] +[x0]- ; byrRegs -[x0 x19]+ ; byrRegs -[x0 x20] cmp x0, #0- csel x0, x0, x21, ne
- ;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x21]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30+ csel x0, x0, x22, ne
+ ;; size=84 bbWeight=0.50 PerfScore 6.50
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x22]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 140, prolog size 20, PerfScore 20.50, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -96,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 33 (0x00021) Actual length = 132 (0x000084)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,9 +98,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]!+ 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]!
+ E4 end E4 end
E4 end
@@ -8,33 +8,26 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 loc0 [V02 ] ( 1, 1 ) struct (64) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon]>
; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]>-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd single-def <System.__Canon[]>+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd single-def <System.__Canon[]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]>
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.__Canon]>-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect"
-; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect"
-; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect"
-; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup"
-; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect"
+; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect"
+; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 344
@@ -60,23 +53,20 @@ G_M19942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
;; size=76 bbWeight=1 PerfScore 15.00-G_M19942_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M19942_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M19942_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M19942_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M19942_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M19942_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19942_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY add x1, fp, #0xD1FFAB1E // [V02 loc0]+ mov x0, x21 mov w2, #8
movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -88,29 +78,13 @@ G_M19942_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0]
str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8]
str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]- ldr x0, [x19, #0x38]
- ; byrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M19942_IG08
- ;; size=60 bbWeight=1 PerfScore 18.00
-G_M19942_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x0, #0x18]
- cbz x21, G_M19942_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M19942_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M19942_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M19942_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19+ ; byrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x21, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M19942_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x1, x21+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
mov x2, x20
; gcrRegs +[x2]
@@ -120,7 +94,12 @@ G_M19942_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x2 x20]- mov x1, x21+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0 add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToArray():System.__Canon[]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -128,27 +107,32 @@ G_M19942_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- mov x19, x0
- ; gcrRegs +[x19]
- mov x1, x21
- add x0, fp, #24 // [V03 loc1]+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov x0, x19 ; gcrRegs -[x0]+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2- mov x0, x19+ mov x0, x20 ; gcrRegs +[x0]- ;; size=96 bbWeight=1 PerfScore 21.00
-G_M19942_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=248 bbWeight=1 PerfScore 47.50
+G_M19942_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0xD1FFAB1E]
ldp x19, x20, [sp, #0xD1FFAB1E]
ldp fp, lr, [sp], #0xD1FFAB1E
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=008eb219) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=008eb219) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1) ; ============================================================
Unwind Info:
@@ -159,7 +143,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 80 (0x00050) Actual length = 320 (0x000140)+ Function Length : 85 (0x00055) Actual length = 340 (0x000154) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory
4System.Canon,System.Canon,System.Canon,System.Canon@@ -8,18 +8,13 @@
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 7, 5.56) long -> x19 single-def
-; V01 arg0 [V01,T05] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.PrintfImpl+Step[]>+; V00 TypeCtx [V00,T01] ( 5, 5 ) long -> x19 single-def
+; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.PrintfImpl+Step[]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfImpl+CaptureFinal1@437[System.__Canon,System.__Canon,System.__Canon,double]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 rat0 [V07,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V09 rat2 [V09,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat3 [V10,T04] ( 3, 5.60) long -> x0 "spilling expr"
-; V11 rat4 [V11,T06] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -33,13 +28,13 @@ G_M28402_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50-G_M28402_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M28402_IG08
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M28402_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- bl CORINFO_HELP_NEWSFAST+G_M28402_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
@@ -50,17 +45,12 @@ G_M28402_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x20]
; byrRegs -[x14]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M28402_IG07
- ;; size=36 bbWeight=1 PerfScore 11.00
-G_M28402_IG04: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M28402_IG07
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M28402_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -73,33 +63,15 @@ G_M28402_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
str x1, [x0, #0x18]- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M28402_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=92 bbWeight=1 PerfScore 15.00
+G_M28402_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00-G_M28402_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x21]
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M28402_IG05
- ;; size=24 bbWeight=0.36 PerfScore 1.44
-G_M28402_IG08: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21] +[x20]
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M28402_IG03
- ;; size=24 bbWeight=0.20 PerfScore 0.80 -; Total bytes of code 180, prolog size 20, PerfScore 39.44, instruction count 45, allocated bytes for code 180 (MethodHash=b97d910d) for method Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 25.50, instruction count 34, allocated bytes for code 136 (MethodHash=b97d910d) for method Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -110,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,15 +8,13 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
-; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.IO.TextWriter>+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.IO.TextWriter> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T00] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfImpl+TextWriterPrintfEnv@1081[System.__Canon]>
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 tmp3 [V06,T06] ( 2, 4 ) ref -> x15 class-hnd single-def "Inlining Arg" <System.IO.TextWriter>
-; V07 rat0 [V07,T05] ( 3, 4 ) long -> x1 "runtime lookup"
-; V08 rat1 [V08,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"+; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> x15 class-hnd single-def "Inlining Arg" <System.IO.TextWriter> ;
; Lcl frame size = 16
@@ -30,24 +28,12 @@ G_M17579_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M17579_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M17579_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M17579_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M17579_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M17579_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+G_M17579_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M17579_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #16
; byrRegs +[x14]
@@ -70,14 +56,14 @@ G_M17579_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]- ;; size=44 bbWeight=1 PerfScore 10.00
-G_M17579_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 12.00
+G_M17579_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 116, prolog size 16, PerfScore 25.90, instruction count 29, allocated bytes for code 116 (MethodHash=ab80bb54) for method Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)+; Total bytes of code 92, prolog size 16, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=ab80bb54) for method Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -88,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc
2[System.Canon,System.Canon],System.Canon,double):System.Canon (FullOpts)@@ -7,18 +7,16 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
-; V02 arg1 [V02,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T08] ( 4, 3 ) double -> [fp+0x10] single-def
-; V04 loc0 [V04,T06] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V02 arg1 [V02,T02] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T06] ( 4, 3 ) double -> [fp+0x10] single-def
+; V04 loc0 [V04,T04] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>> ;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V08 tmp2 [V08,T05] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V10 rat0 [V10,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V11 rat1 [V11,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"+; V08 tmp2 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V09 tmp3 [V09,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect" ;
; Lcl frame size = 16
@@ -34,30 +32,19 @@ G_M51117_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M51117_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M51117_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M51117_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M51117_IG05
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M51117_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=16 bbWeight=0.20 PerfScore 0.50
-G_M51117_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x19
; gcrRegs +[x1]- bl CORINFO_HELP_ISINSTANCEOFCLASS+ bl CORINFO_HELP_ISINSTANCEOFARRAY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0- cbz x0, G_M51117_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M51117_IG06: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref+ cbz x0, G_M51117_IG05
+ ;; size=28 bbWeight=1 PerfScore 5.00
+G_M51117_IG03: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
mov x1, x20
; gcrRegs +[x1]
@@ -66,13 +53,13 @@ G_M51117_IG06: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x28]
;; size=20 bbWeight=0.50 PerfScore 5.75-G_M51117_IG07: ; bbWeight=0.50, epilog, nogc, extend+G_M51117_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50-G_M51117_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref+G_M51117_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1] +[x19]
mov x0, x19
; gcrRegs +[x0]
@@ -89,14 +76,14 @@ G_M51117_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x48]
ldr x1, [x1, #0x20]
;; size=40 bbWeight=0.50 PerfScore 11.00-G_M51117_IG09: ; bbWeight=0.50, epilog, nogc, extend+G_M51117_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
br x1
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 160, prolog size 28, PerfScore 36.45, instruction count 40, allocated bytes for code 160 (MethodHash=5ec73852) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)+; Total bytes of code 140, prolog size 28, PerfScore 30.25, instruction count 35, allocated bytes for code 140 (MethodHash=5ec73852) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +94,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,17 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> ; V03 loc0 [V03 ] ( 1, 1 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <S32>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V06 tmp2 [V06 ] ( 2, 2 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher"
; V07 ReturnAddress[V07 ] ( 1, 1 ) long -> [fp+0x08] do-not-enreg[X] addr-exposed "Return address"-; V08 tmp4 [V08,T05] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 48
@@ -35,22 +33,11 @@ G_M57764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=40 bbWeight=1 PerfScore 7.50-G_M57764_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x18]
- cbz x2, G_M57764_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M57764_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M57764_IG05
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M57764_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+G_M57764_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=16 bbWeight=0.20 PerfScore 0.50
-G_M57764_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
@@ -74,14 +61,14 @@ G_M57764_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x3
ldr x0, [fp, #0x10] // [V06 tmp2]
; gcrRegs +[x0]- ;; size=76 bbWeight=1 PerfScore 17.00
-G_M57764_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=92 bbWeight=1 PerfScore 19.50
+G_M57764_IG03: ; bbWeight=1, epilog, nogc, extend ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x50
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 164, prolog size 32, PerfScore 36.20, instruction count 41, allocated bytes for code 164 (MethodHash=ec501e5b) for method Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)+; Total bytes of code 144, prolog size 32, PerfScore 30.00, instruction count 36, allocated bytes for code 144 (MethodHash=ec501e5b) for method Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -92,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)+ Function Length : 36 (0x00024) Actual length = 144 (0x000090) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,26 +7,21 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T06] ( 7, 4.88) long -> x20 single-def
-; V01 arg0 [V01,T07] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T04] ( 5, 12 ) long -> x20 single-def
+; V01 arg0 [V01,T06] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 arg1 [V02,T01] ( 5, 19 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>-; V03 arg2 [V03,T08] ( 4, 4 ) byref -> x22 single-def+; V03 arg2 [V03,T07] ( 4, 4 ) byref -> x22 single-def ; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>-; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x20 class-hnd <System.__Canon>
-; V06 loc2 [V06,T14] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>+; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x23 class-hnd <System.__Canon>
+; V06 loc2 [V06,T09] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon> ;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V10 tmp2 [V10,T09] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V10 tmp2 [V10,T08] ( 3, 6 ) long -> x11 "VirtualCall with runtime lookup" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V12 tmp4 [V12,T00] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"-; V13 PSPSym [V13,T15] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T05] ( 2, 8.50) long -> x23 hoist "CSE - aggressive"
-; V15 cse1 [V15,T04] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive"
-; V16 rat0 [V16,T10] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
-; V17 rat1 [V17,T13] ( 3, 2 ) long -> x23 "runtime lookup"
-; V18 rat2 [V18,T11] ( 3, 2.80) long -> x0 "spilling expr"
-; V19 rat3 [V19,T12] ( 3, 2.24) long -> x23 "fgMakeTemp is creating a new local variable"+; V13 PSPSym [V13,T10] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V14 cse0 [V14,T05] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive" ;
; Lcl frame size = 40
@@ -47,27 +42,17 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x22, x3
; byrRegs +[x22]
;; size=48 bbWeight=1 PerfScore 9.00-G_M62024_IG02: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; GC ptr vars +{V06 V14}
- cbz x21, G_M62024_IG21
- cbz x19, G_M62024_IG22
- ldr x0, [x20, #0x38]
- ldr x11, [x0, #0x10]
- cbz x11, G_M62024_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M62024_IG03: ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
- b G_M62024_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M62024_IG04: ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref+G_M62024_IG02: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; GC ptr vars +{V06}
+ cbz x21, G_M62024_IG14
+ cbz x19, G_M62024_IG15 mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov x11, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref mov x0, x21
; gcrRegs +[x0]
ldr x1, [x11]
@@ -76,9 +61,8 @@ G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
; gcr arg pop 0
str x0, [fp, #0x20] // [V04 loc0]
; GC ptr vars +{V04}- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; GC ptr vars -{V14}+ ;; size=48 bbWeight=1 PerfScore 11.00
+G_M62024_IG03: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz movz x21, #24
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
@@ -87,69 +71,53 @@ G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs
blr x1
; gcrRegs -[x0]
; gcr arg pop 0- cbz w0, G_M62024_IG14+ cbz w0, G_M62024_IG07 ;; size=28 bbWeight=1 PerfScore 7.00-G_M62024_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ldr x0, [x20, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M62024_IG10
- ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M62024_IG08: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ldr x23, [x0, #0x18]
- cbz x23, G_M62024_IG10
- ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M62024_IG09: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
- b G_M62024_IG11
- ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M62024_IG10: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref+G_M62024_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x23, x0
- ;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M62024_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- mov x11, x23+ mov x11, x0 ldr x0, [fp, #0x20] // [V04 loc0]
; gcrRegs +[x0]
ldr x1, [x11]
blr x1
; gcr arg pop 0- mov x20, x0
- ; gcrRegs +[x20]
- mov x1, x20+ mov x23, x0
+ ; gcrRegs +[x23]
+ mov x1, x23 ; gcrRegs +[x1]
ldr x0, [x19, #0x08]
ldr x2, [x19, #0x18]
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0- cbnz w0, G_M62024_IG13+ cbnz w0, G_M62024_IG06 ldr x0, [fp, #0x20] // [V04 loc0]
; gcrRegs +[x0]
mov x11, x21
ldr x1, [x11]
blr x1- ; gcrRegs -[x0 x20]+ ; gcrRegs -[x0 x23] ; gcr arg pop 0- cbnz w0, G_M62024_IG11
- ;; size=60 bbWeight=8 PerfScore 184.00
-G_M62024_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref+ cbnz w0, G_M62024_IG04
+ ;; size=80 bbWeight=8 PerfScore 208.00
+G_M62024_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x19]- b G_M62024_IG14+ b G_M62024_IG07 ;; size=4 bbWeight=1 PerfScore 1.00-G_M62024_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
- ; gcrRegs +[x20]+G_M62024_IG06: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+ ; gcrRegs +[x23] mov w0, #1
strb w0, [x22]- str x20, [fp, #0x18] // [V06 loc2]
- b G_M62024_IG15+ str x23, [fp, #0x18] // [V06 loc2]
+ b G_M62024_IG08 ;; size=16 bbWeight=1 PerfScore 3.50-G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs -[x20]+G_M62024_IG07: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+ ; gcrRegs -[x23] ; GC ptr vars -{V06}
ldr x0, [fp, #0x20] // [V04 loc0]
; gcrRegs +[x0]
@@ -159,44 +127,44 @@ G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=000
blr x1
; gcrRegs -[x0]
; gcr arg pop 0- b G_M62024_IG19+ b G_M62024_IG12 ;; size=20 bbWeight=1 PerfScore 7.50-G_M62024_IG15: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M62024_IG08: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x22]- ; GC ptr vars +{V02 V04 V06 V14}+ ; GC ptr vars +{V02 V04 V06} ldr x0, [fp, #0x30] // [V13 PSPSym]- bl G_M62024_IG23+ bl G_M62024_IG16 ;; size=8 bbWeight=1 PerfScore 3.00-G_M62024_IG16: ; bbWeight=1, nogc, extend+G_M62024_IG09: ; bbWeight=1, nogc, extend nop
;; size=4 bbWeight=1 PerfScore 0.50-G_M62024_IG17: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V02 V04 V14}+G_M62024_IG10: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V02 V04} ldr x0, [fp, #0x18] // [V06 loc2]
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 2.00-G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend+G_M62024_IG11: ; bbWeight=1, epilog, nogc, extend ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00-G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref+G_M62024_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref ; gcrRegs -[x0]
; byrRegs +[x22]
; GC ptr vars -{V06}
strb wzr, [x22]
mov x0, xzr
;; size=8 bbWeight=1 PerfScore 1.50-G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend+G_M62024_IG13: ; bbWeight=1, epilog, nogc, extend ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00-G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M62024_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[x22]
mov w0, #17
movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
@@ -207,7 +175,7 @@ G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00-G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #12
movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -217,8 +185,8 @@ G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_windows #0
;; size=28 bbWeight=0 PerfScore 0.00-G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V04 V06 V14}+G_M62024_IG16: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V04 V06} stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -226,21 +194,21 @@ G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs
add x3, fp, #96
str x3, [sp, #0x10]
;; size=24 bbWeight=1 PerfScore 5.50-G_M62024_IG24: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz...
@@ -7,20 +7,18 @@
; No matching PGO data
; Final local variable assignments
;-; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <GenInstance`2[System.__Canon,int]>
-; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T06] ( 3, 3 ) int -> x23 single-def
-; V04 arg3 [V04,T04] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
-; V05 arg4 [V05,T05] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <GenInstance`2[System.__Canon,int]>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T05] ( 3, 3 ) int -> x23 single-def
+; V04 arg3 [V04,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon>
+; V05 arg4 [V05,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon> ; V06 loc0 [V06 ] ( 1, 1 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <S32>
;# 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 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher"
; V10 ReturnAddress[V10 ] ( 1, 1 ) long -> [fp+0x08] do-not-enreg[X] addr-exposed "Return address"-; V11 tmp4 [V11,T08] ( 2, 4 ) long -> x1 "argument with side effect"
-; V12 rat0 [V12,T07] ( 3, 4 ) long -> x1 "runtime lookup"
-; V13 rat1 [V13,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"+; V11 tmp4 [V11,T06] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 56
@@ -45,25 +43,14 @@ G_M32303_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x22, x5
; gcrRegs +[x22]
;; size=60 bbWeight=1 PerfScore 11.00-G_M32303_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz+G_M32303_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref ldrsb wzr, [x19]- ldr x0, [x1, #0x38]
- ldr x2, [x0, #0x18]
- cbz x2, G_M32303_IG04
- ;; size=16 bbWeight=1 PerfScore 10.00
-G_M32303_IG03: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- mov x1, x2
- b G_M32303_IG05
- ;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M32303_IG04: ; bbWeight=0.20, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref mov x0, x1
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x1, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M32303_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
@@ -92,8 +79,8 @@ G_M32303_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
blr x3
ldr x0, [fp, #0x18] // [V09 tmp2]
; gcrRegs +[x0]- ;; size=88 bbWeight=1 PerfScore 18.50
-G_M32303_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=116 bbWeight=1 PerfScore 25.00
+G_M32303_IG03: ; bbWeight=1, epilog, nogc, extend ldr x23, [sp, #0x68]
ldp x21, x22, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
@@ -101,7 +88,7 @@ G_M32303_IG06: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 216, prolog size 40, PerfScore 47.40, instruction count 54, allocated bytes for code 216 (MethodHash=bb6581d0) for method GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)+; Total bytes of code 196, prolog size 40, PerfScore 42.00, instruction count 49, allocated bytes for code 196 (MethodHash=bb6581d0) for method GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts) ; ============================================================
Unwind Info:
@@ -112,7 +99,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
2[Microsoft.FSharp.Control.TaskStateMachineData
1[System.Canon],System.Canon]:this (FullOpts)@@ -8,15 +8,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.FSharp.Control.TaskBuilderBase>-; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> x19 single-def+; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03,T05] ( 3, 4 ) long -> x20 "spilling helperCall"+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x20 "spilling helperCall" ; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]>
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 rat0 [V06,T02] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable"
-; V07 rat1 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat2 [V08,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V09 rat3 [V09,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -27,44 +23,19 @@ G_M46011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x1, [fp, #0x18]
mov x19, x1
;; size=20 bbWeight=1 PerfScore 4.00-G_M46011_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x20, [x0, #0x10]
- cbz x20, G_M46011_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M46011_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M46011_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M46011_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M46011_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x20, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M46011_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M46011_IG08
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M46011_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M46011_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M46011_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M46011_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M46011_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M46011_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
@@ -74,14 +45,14 @@ G_M46011_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 4.00
-G_M46011_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=68 bbWeight=1 PerfScore 10.50
+G_M46011_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 144, prolog size 16, PerfScore 31.92, instruction count 36, allocated bytes for code 144 (MethodHash=e0324c44) for method Microsoft.FSharp.Control.TaskBuilderBase:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]:this (FullOpts)+; Total bytes of code 100, prolog size 16, PerfScore 17.50, instruction count 25, allocated bytes for code 100 (MethodHash=e0324c44) for method Microsoft.FSharp.Control.TaskBuilderBase:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -92,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 36 (0x00024) Actual length = 144 (0x000090)+ Function Length : 25 (0x00019) Actual length = 100 (0x000064) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,15 +7,11 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V02 tmp1 [V02,T05] ( 3, 4 ) long -> x20 "spilling helperCall"+; V02 tmp1 [V02,T02] ( 2, 4 ) long -> x20 "spilling helperCall" ; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon]>
;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T02] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable"
-; V06 rat1 [V06,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V07 rat2 [V07,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V08 rat3 [V08,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -26,44 +22,19 @@ G_M5502_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x18]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00-G_M5502_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x20, [x0, #0x10]
- cbz x20, G_M5502_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M5502_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M5502_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M5502_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M5502_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x20, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M5502_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M5502_IG08
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M5502_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M5502_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M5502_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M5502_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M5502_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M5502_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
@@ -73,14 +44,14 @@ G_M5502_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 4.00
-G_M5502_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=68 bbWeight=1 PerfScore 10.50
+G_M5502_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 144, prolog size 16, PerfScore 31.92, instruction count 36, allocated bytes for code 144 (MethodHash=903fea81) for method Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)+; Total bytes of code 100, prolog size 16, PerfScore 17.50, instruction count 25, allocated bytes for code 100 (MethodHash=903fea81) for method Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -91,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 36 (0x00024) Actual length = 144 (0x000090)+ Function Length : 25 (0x00019) Actual length = 100 (0x000064) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,15 +7,11 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V02 tmp1 [V02,T05] ( 3, 4 ) long -> x20 "spilling helperCall"+; V02 tmp1 [V02,T02] ( 2, 4 ) long -> x20 "spilling helperCall" ; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[System.__Canon,System.__Canon]>
;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T02] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable"
-; V06 rat1 [V06,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V07 rat2 [V07,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V08 rat3 [V08,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -26,44 +22,19 @@ G_M59286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x18]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00-G_M59286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x20, [x0, #0x10]
- cbz x20, G_M59286_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M59286_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M59286_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M59286_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M59286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x20, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M59286_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M59286_IG08
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M59286_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M59286_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M59286_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M59286_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M59286_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M59286_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
@@ -73,14 +44,14 @@ G_M59286_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 4.00
-G_M59286_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=68 bbWeight=1 PerfScore 10.50
+G_M59286_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 144, prolog size 16, PerfScore 31.92, instruction count 36, allocated bytes for code 144 (MethodHash=cdc61869) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)+; Total bytes of code 100, prolog size 16, PerfScore 17.50, instruction count 25, allocated bytes for code 100 (MethodHash=cdc61869) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -91,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 36 (0x00024) Actual length = 144 (0x000090)+ Function Length : 25 (0x00019) Actual length = 100 (0x000064) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,44 +8,41 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 6, 6 ) long -> x19 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.__Canon[]>-; V02 arg1 [V02,T05] ( 3, 3 ) int -> x23 single-def+; V02 arg1 [V02,T04] ( 3, 3 ) int -> x23 single-def ; V03 arg2 [V03,T02] ( 4, 4 ) long -> x21 single-def
; V04 arg3 [V04,T03] ( 4, 4 ) int -> x22 single-def-; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.__Canon]>+; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.__Canon]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V07 tmp1 [V07 ] ( 3, 6 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>+; V07 tmp1 [V07 ] ( 3, 6 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]> ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 tmp3 [V09 ] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>+; V09 tmp3 [V09 ] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]> ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V12 tmp6 [V12 ] ( 2, 2 ) byref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05._reference (fldOffset=0x0)" P-DEP
-; V13 tmp7 [V13 ] ( 2, 2 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
-; V14 tmp8 [V14 ] ( 3, 6 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP
-; V15 tmp9 [V15 ] ( 3, 6 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
-; V16 tmp10 [V16 ] ( 3, 5 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP
-; V17 tmp11 [V17 ] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x8)" P-DEP
-; V18 tmp12 [V18,T08] ( 2, 4 ) long -> x1 "argument with side effect"
-; V19 tmp13 [V19,T09] ( 2, 4 ) long -> x1 "argument with side effect"
-; V20 tmp14 [V20,T10] ( 2, 4 ) long -> x1 "argument with side effect"
-; V21 cse0 [V21,T06] ( 4, 4 ) long -> x24 "CSE - aggressive"
-; V22 rat0 [V22,T07] ( 3, 4 ) long -> x24 "runtime lookup"
-; V23 rat1 [V23,T04] ( 3, 5.60) long -> x24 "fgMakeTemp is creating a new local variable"+; V12 tmp6 [V12 ] ( 2, 2 ) byref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._reference (fldOffset=0x0)" P-DEP
+; V13 tmp7 [V13 ] ( 2, 2 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP
+; V14 tmp8 [V14 ] ( 3, 6 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP
+; V15 tmp9 [V15 ] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
+; V16 tmp10 [V16 ] ( 3, 5 ) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP
+; V17 tmp11 [V17 ] ( 3, 5 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x8)" P-DEP
+; V18 tmp12 [V18,T05] ( 2, 4 ) long -> x1 "argument with side effect"
+; V19 tmp13 [V19,T06] ( 2, 4 ) long -> x1 "argument with side effect"
+; V20 tmp14 [V20,T07] ( 2, 4 ) long -> x1 "argument with side effect" ;-; Lcl frame size = 64+; Lcl frame size = 56
G_M63986_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x48]
+ stp x21, x22, [sp, #0x58]
+ str x23, [sp, #0x68] mov fp, sp- add x9, fp, #24+ add x9, fp, #16 movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]- str x0, [fp, #0x48]+ str x0, [fp, #0x40] mov x19, x0
mov x20, x1
; gcrRegs +[x20]
@@ -65,15 +62,15 @@ G_M63986_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x2, [x2]
blr x2
; gcrRegs -[x0]- cbz x21, G_M63986_IG08
- stp xzr, xzr, [fp, #0x28]
- ldr x0, [x19, #0x38]
- ldr x24, [x0, #0x10]
- cbz x24, G_M63986_IG07
- ;; size=56 bbWeight=1 PerfScore 16.50
-G_M63986_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x1, x24
- add x0, fp, #40 // [V07 tmp1]+ cbz x21, G_M63986_IG06
+ stp xzr, xzr, [fp, #0x20]
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ add x0, fp, #32 // [V07 tmp1] mov x2, x20
; gcrRegs +[x2]
mov w3, w23
@@ -84,15 +81,20 @@ G_M63986_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x5, [x5]
blr x5
; gcrRegs -[x2 x20]- ;; size=40 bbWeight=1 PerfScore 8.00
-G_M63986_IG04: ; bbWeight=1, nogc, extend
- ldp x0, x1, [fp, #0x28]
- stp x0, x1, [fp, #0x38]+ ;; size=104 bbWeight=1 PerfScore 20.50
+G_M63986_IG03: ; bbWeight=1, nogc, extend
+ ldp x0, x1, [fp, #0x20]
+ stp x0, x1, [fp, #0x30] ;; size=8 bbWeight=1 PerfScore 4.00-G_M63986_IG05: ; bbWeight=1, extend
- stp xzr, xzr, [fp, #0x18]
- mov x1, x24
- add x0, fp, #24 // [V09 tmp3]+G_M63986_IG04: ; bbWeight=1, extend
+ stp xzr, xzr, [fp, #0x10]
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ add x0, fp, #16 // [V09 tmp3] mov x2, x21
mov w3, w22
movz x4, #0xD1FFAB1E // code for System.Span`1[System.__Canon]:.ctor(ulong,int):this
@@ -100,42 +102,36 @@ G_M63986_IG05: ; bbWeight=1, extend
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4- mov x1, x24
- ldr x2, [fp, #0x18] // [V16 tmp10]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x0
+ ldr x2, [fp, #0x10] // [V16 tmp10] ; byrRegs +[x2]- ldr w3, [fp, #0x20] // [V17 tmp11]
- add x0, fp, #56 // [V05 loc0]+ ldr w3, [fp, #0x18] // [V17 tmp11]
+ add x0, fp, #48 // [V05 loc0] movz x4, #0xD1FFAB1E // code for System.Span`1[System.__Canon]:CopyTo(System.Span`1[System.__Canon]):this
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
; byrRegs -[x2]- ;; size=76 bbWeight=1 PerfScore 19.00
-G_M63986_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x70]
- ldp x21, x22, [sp, #0x60]
- ldp x19, x20, [sp, #0x50]
- ldp fp, lr, [sp], #0x80+ ;; size=116 bbWeight=1 PerfScore 25.00
+G_M63986_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x68]
+ ldp x21, x22, [sp, #0x58]
+ ldp x19, x20, [sp, #0x48]
+ ldp fp, lr, [sp], #0x70 ret lr- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M63986_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x20]
- mov x0, x19
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x24, x0
- b G_M63986_IG03
- ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M63986_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]+ ;; size=20 bbWeight=1 PerfScore 6.00
+G_M63986_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_STRCNS+ bl CORINFO_HELP_NEWARR_1_ALIGN8 ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.ArgumentNullException:Throw(System.String)
movk x1, #0xD1FFAB1E LSL #16
@@ -146,7 +142,7 @@ G_M63986_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 40, PerfScore 64.40, instruction count 83, allocated bytes for code 332 (MethodHash=7e6c060d) for method System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)+; Total bytes of code 352, prolog size 40, PerfScore 66.50, instruction count 88, allocated bytes for code 352 (MethodHash=7e6c060d) for method System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts) ; ============================================================
Unwind Info:
@@ -157,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)+ Function Length : 88 (0x00058) Actual length = 352 (0x000160) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -165,10 +161,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----+ D1 0D save_reg X#4 Z#13 (0x0D); str x23, [sp, #104] E6 save_next- E6 save_next
- C8 0A save_regp X#0 Z#10 (0x0A); stp x19, x20, [sp, #80]
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
- E4 end+ C8 09 save_regp X#0 Z#9 (0x09); stp x19, x20, [sp, #72]
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]! E4 end
@@ -8,14 +8,14 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <System.Object>+; V00 arg0 [V00,T00] ( 6, 4.50) ref -> x19 class-hnd single-def <System.Object> ; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x20 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref single-def
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref single-def
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref -; V07 tmp5 [V07,T04] ( 2, 1 ) long -> x1 +; V07 tmp5 [V07,T04] ( 3, 1.50) long -> x1 ; V08 tmp6 [V08,T02] ( 2, 2 ) long -> x1 "Cast away GC"
; V09 tmp7 [V09,T03] ( 2, 2 ) long -> x1 "argument with side effect"
;
@@ -36,13 +36,18 @@ G_M5667_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_ISINSTANCEOFINTERFACE+ bl CORINFO_HELP_INITINSTCLASS ; gcrRegs -[x1] +[x0]
; gcr arg pop 0- cbz x0, G_M5667_IG05+ cbz x0, G_M5667_IG07 ;; size=24 bbWeight=1 PerfScore 4.00-G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref+G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]+ cbnz x19, G_M5667_IG04
+ mov x1, xzr
+ b G_M5667_IG05
+ ;; size=12 bbWeight=0.50 PerfScore 1.25
+G_M5667_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Runtime.InteropServices.Marshal:GetIDispatchForObject(System.Object):long
@@ -53,6 +58,8 @@ G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x
; gcrRegs -[x0 x19]
; gcr arg pop 0
mov x1, x0+ ;; size=28 bbWeight=0.50 PerfScore 3.25
+G_M5667_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref mov x8, x20
; byrRegs +[x8]
mov w0, #9
@@ -63,13 +70,13 @@ G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x
blr x2
; byrRegs -[x8 x20]
; gcr arg pop 0- ;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M5667_IG04: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=28 bbWeight=0.50 PerfScore 3.25
+G_M5667_IG06: ; 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_M5667_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref+G_M5667_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref ; gcrRegs +[x19]
; byrRegs +[x20]
mov x1, x20
@@ -80,14 +87,14 @@ G_M5667_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=24 bbWeight=0.50 PerfScore 2.75-G_M5667_IG06: ; bbWeight=0.50, epilog, nogc, extend+G_M5667_IG08: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 148, prolog size 20, PerfScore 19.75, instruction count 37, allocated bytes for code 148 (MethodHash=fb8de9dc) for method Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)+; Total bytes of code 160, prolog size 20, PerfScore 21.00, instruction count 40, allocated bytes for code 160 (MethodHash=fb8de9dc) for method Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts) ; ============================================================
Unwind Info:
@@ -98,7 +105,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 37 (0x00025) Actual length = 148 (0x000094)+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc
2[System.Canon,System.Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)@@ -8,76 +8,75 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 3 ) byref -> x19 this single-def
-; V01 TypeCtx [V01,T01] ( 5, 4.20) long -> x1 single-def
-; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>+; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def
+; V01 TypeCtx [V01,T01] ( 5, 5 ) long -> x19 single-def
+; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.AsyncActivationContents`1[System.__Canon]>+; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.AsyncActivationContents`1[System.__Canon]> ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V08 tmp5 [V08,T06] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Control.AsyncActivationAux>+; V08 tmp5 [V08,T04] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Control.AsyncActivationAux> ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.contents (fldOffset=0x0)" P-INDEP-; V10 rat0 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup"
-; V11 rat1 [V11,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
G_M49691_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20]+ stp x21, x22, [sp, #0x30] mov fp, sp
str x1, [fp, #0x18]- mov x19, x0
- ; byrRegs +[x19]
- mov x20, x2
- ; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M49691_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M49691_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M49691_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M49691_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M49691_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x20, x0
+ ; byrRegs +[x20]
+ mov x19, x1
+ mov x21, x2
+ ; gcrRegs +[x21]
+ ;; size=32 bbWeight=1 PerfScore 6.00
+G_M49691_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M49691_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]- ldr x14, [x19]+ mov x22, x0
+ ; gcrRegs +[x22]
+ ldr x14, [x20] ; gcrRegs +[x14]- ldr x1, [x14, #0x10]
- ; gcrRegs +[x1]
- add x14, x0, #8+ ldr x0, [x14, #0x10]
+ add x14, x22, #8 ; gcrRegs -[x14]
; byrRegs +[x14]- mov x15, x20+ mov x15, x21 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x15 x20]
- ; byrRegs -[x14 x19]
- add x14, x0, #16+ ; gcrRegs -[x15 x21]
+ ; byrRegs -[x14 x20]
+ add x14, x22, #16 ; byrRegs +[x14]- mov x15, x1+ mov x15, x0 ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x1 x15]+ ; gcrRegs -[x0 x15] ; byrRegs -[x14]- ;; size=36 bbWeight=1 PerfScore 11.00
-G_M49691_IG06: ; bbWeight=1, epilog, nogc, extend+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x22
+ ; gcrRegs +[x0]
+ ;; size=84 bbWeight=1 PerfScore 18.00
+G_M49691_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=12 bbWeight=1 PerfScore 3.00+ ;; size=16 bbWeight=1 PerfScore 4.00 -; Total bytes of code 108, prolog size 16, PerfScore 26.90, instruction count 27, allocated bytes for code 108 (MethodHash=7be33de4) for method Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)+; Total bytes of code 132, prolog size 20, PerfScore 28.00, instruction count 33, allocated bytes for code 132 (MethodHash=7be33de4) for method Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -88,7 +87,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)+ Function Length : 33 (0x00021) Actual length = 132 (0x000084) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,9 +95,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]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
E4 end
E4 end
@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x28]
str x0, [fp, #0x20] // [V00 TypeCtx]
;; size=16 bbWeight=1 PerfScore 3.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M41558_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x20] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V02 tmp1]
- b G_M41558_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x20] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V02 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x18] // [V02 tmp1]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x1, [x1]
blr x1
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=48 bbWeight=1 PerfScore 13.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -63,7 +48,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)+ 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,15 +8,12 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 5, 4.36) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 rat0 [V06,T06] ( 3, 4 ) long -> x1 "runtime lookup"
-; V07 rat1 [V07,T02] ( 3, 5.60) long -> x1 "spilling expr"
-; V08 rat2 [V08,T05] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -30,29 +27,12 @@ G_M54721_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x2
; gcrRegs +[x20]
;; size=24 bbWeight=1 PerfScore 4.50-G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cmp x2, #32
- ble G_M54721_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M54721_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x1, #0x20]
- cbz x1, G_M54721_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M54721_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M54721_IG06
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M54721_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -68,14 +48,14 @@ G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M54721_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=44 bbWeight=1 PerfScore 7.50
+G_M54721_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 116, prolog size 16, PerfScore 25.42, instruction count 29, allocated bytes for code 116 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1)+; Total bytes of code 80, prolog size 16, PerfScore 15.00, instruction count 20, allocated bytes for code 80 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -86,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)+ 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)
@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x30] // [V00 TypeCtx]
str x1, [fp, #0x28] // [V01 arg0]
;; size=20 bbWeight=1 PerfScore 4.50-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M56297_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x0, [x0, #0x10]
- str x0, [fp, #0x18] // [V04 tmp1]
- b G_M56297_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x30] // [V00 TypeCtx]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY str x0, [fp, #0x18] // [V04 tmp1]- ;; size=24 bbWeight=0.20 PerfScore 1.10
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x2, fp, #32 // [V02 loc0]
ldr x0, [fp, #0x18] // [V04 tmp1]
ldr x1, [fp, #0x28] // [V01 arg0]
@@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)+ Function Length : 21 (0x00015) Actual length = 84 (0x000054) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -74,9 +74,11 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #210- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -94,7 +96,7 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
; gcr arg pop 0
str x0, [fp, #0x18] // [V12 tmp7]
@@ -103,9 +105,11 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #210- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -128,7 +132,8 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #210- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
ldr x15, [fp, #0x18] // [V12 tmp7]
; gcrRegs +[x15]
@@ -137,6 +142,7 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x14, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]+ ; byrRegs -[x0] ldr x0, [fp, #0x18] // [V12 tmp7]
; gcrRegs +[x0]
str x0, [fp, #0x20] // [V11 tmp6]
@@ -65,7 +65,7 @@ G_M58772_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_CHKCASTCLASS+ bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
str x0, [fp, #0x58] // [V03 loc0]
@@ -83,9 +83,11 @@ G_M58772_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #91- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -131,7 +133,7 @@ G_M58772_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_CHKCASTCLASS+ bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
str x0, [fp, #0x58] // [V03 loc0]
@@ -150,7 +152,7 @@ G_M58772_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
; gcr arg pop 0
str x0, [fp, #0x40] // [V07 tmp1]
@@ -174,7 +176,7 @@ G_M58772_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
; gcr arg pop 0
str x0, [fp, #0x38] // [V08 tmp2]
@@ -30,9 +30,11 @@ G_M11184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #97- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -56,9 +58,11 @@ G_M11184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #97- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -78,9 +82,11 @@ G_M11184_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #97- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -20,36 +18,24 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M41558_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M41558_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Array:Empty[System.__Canon]():System.__Canon[]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -60,7 +46,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)
3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray
1+Builder[System.ValueTuple`3[int,int,System.__Canon]@@ -7,18 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]>
;# 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 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> x1 "argument with side effect"
-; V07 rat0 [V07,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V09 rat2 [V09,T05] ( 3, 4 ) long -> x1 "runtime lookup"
-; V10 rat3 [V10,T02] ( 3, 5.60) long -> x0 "spilling expr"
-; V11 rat4 [V11,T03] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> x1 "argument with side effect" ;
; Lcl frame size = 24
@@ -29,22 +24,12 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, x0, [fp, #0x18] // [V01 loc0]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M7461_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7461_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -52,28 +37,13 @@ G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x1
; gcrRegs +[x0]
str x0, [fp, #0x18] // [V01 loc0]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M7461_IG08
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x18]
- cbz x1, G_M7461_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7461_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x1, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x0, fp, #24 // [V01 loc0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this
movk x2, #0xD1FFAB1E LSL #16
@@ -81,14 +51,14 @@ G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs +[x0]- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=92 bbWeight=1 PerfScore 19.00
+G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.50, instruction count 42, allocated bytes for code 168 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts) ; ============================================================
Unwind Info:
@@ -99,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,22 +7,17 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect"
-; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect"
-; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup"
-; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect"
+; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
mov w21, w2
;; size=32 bbWeight=1 PerfScore 6.00-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M26687_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
mov w2, w21
@@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
ldr x3, [x3]
blr x3
; gcrRegs -[x1]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M26687_IG08
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M26687_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M26687_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ bl CORINFO_HELP_MEMCPY mov x1, x20
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=88 bbWeight=1 PerfScore 17.50
+G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -107,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)+ Function Length : 34 (0x00022) Actual length = 136 (0x000088) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T04] ( 5, 3.60) long -> x0 single-def
-; V01 arg0 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V02 arg1 [V02,T06] ( 3, 3 ) ubyte -> x2 single-def+; V00 TypeCtx [V00,T01] ( 7, 11.50) long -> x19 single-def
+; V01 arg0 [V01,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
+; V02 arg1 [V02,T05] ( 3, 3 ) ubyte -> x2 single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>-; V04 loc1 [V04 ] ( 2, 8 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>+; V04 loc1 [V04 ] ( 2, 4 ) struct (80) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -21,39 +21,39 @@
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"-;* V13 tmp7 [V13,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp8 [V14,T01] ( 3, 12 ) ubyte -> x0 "Inline stloc first use temp"+;* V13 tmp7 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V14 tmp8 [V14,T03] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>-; V18 tmp12 [V18,T02] ( 4, 9 ) ref -> x19 "field V03._builder (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T00] ( 8, 18 ) int -> x20 "field V03._index (fldOffset=0x8)" P-INDEP+; V18 tmp12 [V18,T02] ( 3, 6.50) ref -> x20 "field V03._builder (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T00] ( 5, 14.50) int -> x21 "field V03._index (fldOffset=0x8)" P-INDEP ;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "V05.[004..005)"-; V21 tmp15 [V21,T09] ( 2, 2 ) long -> x0 "argument with side effect"
-; V22 rat0 [V22,T08] ( 3, 2 ) long -> x0 "runtime lookup"
-; V23 rat1 [V23,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V21 tmp15 [V21,T07] ( 2, 2 ) long -> x0 "argument with side effect" ;-; Lcl frame size = 96+; Lcl frame size = 88 -G_M36549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+G_M36549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!- stp x19, x20, [sp, #0x70]+ stp x19, x20, [sp, #0x68]
+ str x21, [sp, #0x78] mov fp, sp- add x9, fp, #24+ add x9, fp, #16 movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
stp xzr, xzr, [x9, #0x40]- str x0, [fp, #0x68]
- mov x19, x1
- ; gcrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 8.00
-G_M36549_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ str x0, [fp, #0x60]
+ mov x19, x0
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=48 bbWeight=1 PerfScore 9.50
+G_M36549_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz tst w2, #255- beq G_M36549_IG09+ beq G_M36549_IG10 ;; size=8 bbWeight=1 PerfScore 1.50-G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19+G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ mov x0, x20 ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
movk x1, #0xD1FFAB1E LSL #16
@@ -61,22 +61,23 @@ G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x1, [x1]
ldr wzr, [x0]
blr x1- ; gcrRegs -[x19]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w20, w1
- add w20, w20, #1
- ldr x0, [x19, #0x08]
- ldr w0, [x0, #0x10]+ ; gcrRegs -[x20]
+ mov x20, x0
+ ; gcrRegs +[x20]
+ mov w21, w1
+ b G_M36549_IG05
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
+G_M36549_IG04: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]- cmp w20, w0
- bge G_M36549_IG05
- ;; size=56 bbWeight=0.50 PerfScore 9.00
-G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x08]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x0, [x20, #0x08] ; gcrRegs +[x0]- add x8, fp, #24 // [V04 loc1]
- mov w1, w20+ add x8, fp, #16 // [V04 loc1]
+ mov w1, w21 movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -84,70 +85,75 @@ G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr wzr, [x0]
blr x2
; gcrRegs -[x0]- ldrb w0, [fp, #0x34] // [V04 loc1+0x1c]+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldrb w0, [fp, #0x2C] // [V04 loc1+0x1c] sub w1, w0, #1
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi- bls G_M36549_IG07
- add w20, w20, #1
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- ldr w0, [x0, #0x10]
- ; gcrRegs -[x0]
- cmp w20, w0
- blt G_M36549_IG04
- ;; size=80 bbWeight=4 PerfScore 102.00
-G_M36549_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M36549_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x80
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M36549_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M36549_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x80
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M36549_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M36549_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M36549_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M36549_IG12
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M36549_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+ bls G_M36549_IG08
+ ;; size=100 bbWeight=2 PerfScore 47.00
+G_M36549_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M36549_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19+ bl CORINFO_HELP_MEMCPY
+ add w21, w21, #1
+ ldr x0, [x20, #0x08]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ cmp w21, w0
+ blt G_M36549_IG04
+ ;; size=40 bbWeight=4 PerfScore 44.00
+G_M36549_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36549_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
+ ldp fp, lr, [sp], #0x80
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M36549_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M36549_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
+ ldp fp, lr, [sp], #0x80
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M36549_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x20]
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x1, x20 ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.OverloadResolution:SingleValidResult[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2- ; gcrRegs -[x1 x19]
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M36549_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x70]+ ; gcrRegs -[x1 x20]
+ ;; size=44 bbWeight=0.50 PerfScore 4.50
+G_M36549_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68] ldp fp, lr, [sp], #0x80
ret lr- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.50 -; Total bytes of code 288, prolog size 36, PerfScore 132.85, instruction count 72, allocated bytes for code 288 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)+; Total bytes of code 336, prolog size 40, PerfScore 120.00, instruction count 84, allocated bytes for code 336 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts) ; ============================================================
Unwind Info:
@@ -158,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 72 (0x00048) Actual length = 288 (0x000120)+ Function Length : 84 (0x00054) Actual length = 336 (0x000150) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -172,10 +178,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
...
@@ -8,69 +8,68 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;
; Lcl frame size = 8
G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18]- str x21, [sp, #0x28]+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38] mov fp, sp
str x0, [fp, #0x10]- mov x20, x1+ mov x19, x0
+ mov x21, x1
+ ; gcrRegs +[x21]
+ mov w22, w2
+ mov x20, x3 ; gcrRegs +[x20]- mov w21, w2
- mov x19, x3
- ; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.00
-G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x11, [x1, #0x10]
- cbz x11, G_M18340_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- b G_M18340_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+ ;; size=40 bbWeight=1 PerfScore 7.50
+G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x11, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x0, x21 ; gcrRegs +[x0]- mov x1, x19+ mov x11, x23
+ mov x1, x20 ; gcrRegs +[x1]- ldr x2, [x11]+ ldr x2, [x23] blr x2- ; gcrRegs -[x1 x19-x20]
- uxtb w1, w21
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]+ ; gcrRegs -[x1 x20-x21]
+ uxtb w1, w22
+ ;; size=68 bbWeight=1 PerfScore 12.50
+G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 ret lr- ;; size=16 bbWeight=1 PerfScore 5.00+ ;; size=20 bbWeight=1 PerfScore 6.00 -; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -81,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)+ Function Length : 32 (0x00020) Actual length = 128 (0x000080) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,9 +88,9 @@ 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]+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+ E6 save_next C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray
1[System.__Canon]:this (FullOpts)@@ -8,57 +8,54 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 3 ) byref -> x19 this single-def
-; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def+; V00 this [V00,T01] ( 3, 3 ) byref -> x20 this single-def
+; V01 TypeCtx [V01,T00] ( 5, 5 ) 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"+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x21 "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T04] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T03] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP ;
; Lcl frame size = 8
G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28] mov fp, sp
str x1, [fp, #0x10]- mov x19, x0
- ; byrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
-G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x1, #0x38]
- ldr x0, [x0, #0x10]
- cbz x0, G_M44373_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- b G_M44373_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- mov x0, x1+ mov x20, x0
+ ; byrRegs +[x20]
+ mov x19, x1
+ ;; size=28 bbWeight=1 PerfScore 5.50
+G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ mov x0, x19 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr x1, [x19]+ bl CORINFO_HELP_MEMCPY
+ mov x21, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ ldr x1, [x20] ; gcrRegs +[x1]- bl CORINFO_HELP_ISINSTANCEOFARRAY+ mov x0, x21
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[x1] +[x0]- ; byrRegs -[x19]
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20+ ; byrRegs -[x20]
+ ;; size=56 bbWeight=1 PerfScore 11.00
+G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30 ret lr- ;; size=12 bbWeight=1 PerfScore 4.00+ ;; size=16 bbWeight=1 PerfScore 5.00 -; Total bytes of code 76, prolog size 16, PerfScore 20.40, instruction count 19, allocated bytes for code 76 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)+; Total bytes of code 100, prolog size 20, PerfScore 21.50, instruction count 25, allocated bytes for code 100 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -69,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)+ Function Length : 25 (0x00019) Actual length = 100 (0x000064) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -77,10 +74,9 @@ Unwind Info:
---- 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
- E4 end+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end
E4 end
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -20,36 +18,24 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=1 PerfScore 2.50-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M15963_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M15963_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 7.00
+G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -60,7 +46,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)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.IEnumerator+mkSeq@177[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M38576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M38576_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M38576_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M38576_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M38576_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M38576_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M38576_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,13 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup"
-; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 8
@@ -26,24 +24,12 @@ G_M3011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x1
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x10]
- cbz x1, G_M3011_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M3011_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M3011_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M3011_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
add x14, x0, #8
; byrRegs +[x14]
@@ -52,14 +38,14 @@ G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M3011_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=32 bbWeight=1 PerfScore 5.50
+G_M3011_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 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,72 +8,64 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T09] ( 3, 3 ) ref -> x21 this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def+; V00 this [V00,T03] ( 3, 3 ) ref -> x21 this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def ; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V04 tmp1 [V04,T27] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T24] ( 2, 4 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T25] ( 2, 4 ) long -> x23 "spilling helperCall"
-; V07 tmp4 [V07,T16] ( 2, 4 ) ref -> x23 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x22 "spilling helperCall"
-;* V09 tmp6 [V09,T28] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp7 [V10,T17] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V11 tmp8 [V11,T26] ( 2, 4 ) long -> x22 "spilling helperCall"
-; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x24 "spilling helperCall"+; V04 tmp1 [V04,T12] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V05 tmp2 [V05,T13] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V06 tmp3 [V06,T14] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V07 tmp4 [V07,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V08 tmp5 [V08,T15] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V09 tmp6 [V09,T16] ( 2, 4 ) long -> x25 "spilling helperCall"
+; V10 tmp7 [V10,T05] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V11 tmp8 [V11,T17] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V12 tmp9 [V12,T18] ( 2, 4 ) long -> x24 "spilling helperCall" ; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V15 tmp12 [V15,T18] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V16 tmp13 [V16,T19] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V17 tmp14 [V17,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V18 tmp15 [V18,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V19 tmp16 [V19,T22] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V20 tmp17 [V20,T23] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V21 cse0 [V21,T08] ( 4, 4 ) long -> x22 "CSE - aggressive"
-; V22 cse1 [V22,T12] ( 3, 3 ) long -> x24 "CSE - moderate"
-; V23 rat0 [V23,T13] ( 3, 4 ) long -> x22 "runtime lookup"
-; V24 rat1 [V24,T05] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable"
-; V25 rat2 [V25,T14] ( 3, 4 ) long -> x24 "runtime lookup"
-; V26 rat3 [V26,T06] ( 3, 5.60) long -> x0 "spilling expr"
-; V27 rat4 [V27,T10] ( 3, 4.48) long -> x24 "fgMakeTemp is creating a new local variable"
-; V28 rat5 [V28,T15] ( 3, 4 ) long -> x0 "runtime lookup"
-; V29 rat6 [V29,T07] ( 3, 5.60) long -> x0 "spilling expr"
-; V30 rat7 [V30,T11] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V15 tmp12 [V15,T06] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V16 tmp13 [V16,T07] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V17 tmp14 [V17,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V18 tmp15 [V18,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V19 tmp16 [V19,T10] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V20 tmp17 [V20,T11] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M38496_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x21, x0
; gcrRegs +[x21]
mov x19, x1
mov x20, x2
; gcrRegs +[x20]- ;; size=36 bbWeight=1 PerfScore 7.00
-G_M38496_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x22, [x0, #0x10]
- cbz x22, G_M38496_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M38496_IG03: ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- b G_M38496_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M38496_IG04: ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref+ ;; size=40 bbWeight=1 PerfScore 8.00
+G_M38496_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x22, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M38496_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0 mov x0, x22- mov x23, x22 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -92,31 +84,22 @@ G_M38496_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x1-x2] +[x0]- mov x23, x0
- ; gcrRegs +[x23]
- ldr x0, [x19, #0x38]+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x19 ; gcrRegs -[x0]- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M38496_IG08
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M38496_IG06: ; bbWeight=0.80, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr x24, [x0, #0x18]
- cbz x24, G_M38496_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M38496_IG07: ; bbWeight=0.64, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
- b G_M38496_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M38496_IG08: ; bbWeight=0.36, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x24, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M38496_IG09: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- mov x0, x22+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0
+ mov x0, x24 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -127,7 +110,7 @@ G_M38496_IG09: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00
; gcrRegs +[x2]
mov x1, x20
; gcrRegs +[x1]- mov x0, x22+ mov x0, x23 ; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -137,33 +120,29 @@ G_M38496_IG09: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00
; gcrRegs -[x1-x2 x20] +[x0]
mov x20, x0
; gcrRegs +[x20]- mov x22, x24
- ldr x0, [x19, #0x38]+ mov x0, x19 ; gcrRegs -[x0]- ldr x1, [x0, #0x08]
- cmp x1, #32
- ble G_M38496_IG12
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M38496_IG10: ; bbWeight=0.80, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x20]
- cbz x0, G_M38496_IG12
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M38496_IG11: ; bbWeight=0.64, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
- b G_M38496_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M38496_IG12: ; bbWeight=0.36, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]- mov x0, x22+ mov x0, x25 ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
@@ -175,7 +154,7 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00
; gcrRegs +[x2]
mov x1, x20
; gcrRegs +[x1]- mov x0, x24+ mov x0, x23 ; gcrRegs -[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
@@ -185,7 +164,7 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00
; gcrRegs -[x1-x2 x20] +[x0]
mov x2, x0
; gcrRegs +[x2]- mov x1, x23+ mov x1, x22 ; gcrRegs +[x1]
mov x0, x24
; gcrRegs -[x0]
@@ -194,7 +173,7 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3- ; gcrRegs -[x1-x2 x23] +[x0]+ ; gcrRegs -[x1-x2 x22] +[x0] mov x15, x0
; gcrRegs +[x15]
ldr x0, [x21, #0xD1FFAB1E]
@@ -212,27 +191,28 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00
; byrRegs -[x14]
mov x0, x19
; gcrRegs +[x0]- ;; size=128 bbWeight=1 PerfScore 29.00
-G_M38496_IG14: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]+ ;; size=436 bbWeight=1 PerfScore 83.50
+G_M38496_IG03: ; bbWeight=1, epilog, nogc, extend...
@@ -9,68 +9,94 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def ; V02 arg1 [V02,T02] ( 5, 5 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V04 tmp1 [V04,T25] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T22] ( 2, 4 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T23] ( 2, 4 ) long -> x22 "spilling helperCall"
-; V07 tmp4 [V07,T15] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x21 "spilling helperCall"
-;* V09 tmp6 [V09,T26] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp7 [V10,T16] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V11 tmp8 [V11,T24] ( 2, 4 ) long -> x24 "spilling helperCall"
-; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x23 "spilling helperCall"+; V04 tmp1 [V04,T10] ( 2, 4 ) long -> x21 "spilling helperCall"
+; V05 tmp2 [V05,T11] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V06 tmp3 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V08 tmp5 [V08,T13] ( 2, 4 ) long -> x22 "spilling helperCall"
+; V09 tmp6 [V09,T14] ( 2, 4 ) long -> x24 "spilling helperCall"
+; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V11 tmp8 [V11,T15] ( 2, 4 ) long -> x23 "spilling helperCall"
+; V12 tmp9 [V12,T16] ( 2, 4 ) long -> x25 "spilling helperCall" ; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]>
;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V15 tmp12 [V15,T17] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V16 tmp13 [V16,T18] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V17 tmp14 [V17,T19] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V18 tmp15 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V19 tmp16 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V20 cse0 [V20,T08] ( 4, 4 ) long -> x21 "CSE - aggressive"
-; V21 cse1 [V21,T11] ( 3, 3 ) long -> x23 "CSE - moderate"
-; V22 rat0 [V22,T12] ( 3, 4 ) long -> x21 "runtime lookup"
-; V23 rat1 [V23,T05] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T13] ( 3, 4 ) long -> x23 "runtime lookup"
-; V25 rat3 [V25,T06] ( 3, 5.60) long -> x0 "spilling expr"
-; V26 rat4 [V26,T09] ( 3, 4.48) long -> x23 "fgMakeTemp is creating a new local variable"
-; V27 rat5 [V27,T14] ( 3, 4 ) long -> x0 "runtime lookup"
-; V28 rat6 [V28,T07] ( 3, 5.60) long -> x0 "spilling expr"
-; V29 rat7 [V29,T10] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V15 tmp12 [V15,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V16 tmp13 [V16,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V17 tmp14 [V17,T07] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
+; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M20173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x50]!- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48] mov fp, sp- str x1, [fp, #0x18]+ str x1, [fp, #0x10] mov x19, x1
mov x20, x2
; gcrRegs +[x20]- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x21, [x0, #0x10]
- cbz x21, G_M20173_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M20173_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- b G_M20173_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M20173_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref+ ;; size=36 bbWeight=1 PerfScore 7.50
+G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x21, x0- ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x22, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x23, x0 mov x0, x21- mov x22, x21+ movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ mov x0, x22
+ ; gcrRegs -[x0]
+ movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x1-x2] +[x0]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ mov x0, x19
+ ; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x22, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ mov x24, x0
+ mov x0, x23 movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -91,72 +117,25 @@ G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x1-x2] +[x0]
mov x22, x0
; gcrRegs +[x22]- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #24
- ble G_M20173_IG08
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M20173_IG06: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x23, [x0, #0x18]
- cbz x23, G_M20173_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M20173_IG07: ; bbWeight=0.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- b G_M20173_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M20173_IG08: ; bbWeight=0.36, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref mov x0, x19+ ; gcrRegs -[x0] movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY mov x23, x0- ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M20173_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x21
- movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- ; gcrRegs -[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2] +[x0]
- mov x21, x0
- ; gcrRegs +[x21]
- mov x24, x23
- ldr x0, [x19, #0x38]
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x08]
- cmp x1, #32
- ble G_M20173_IG12
- ;; size=80 bbWeight=1 PerfScore 21.50
-G_M20173_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x20]
- cbz x0, G_M20173_IG12
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M20173_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M20173_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M20173_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref mov x0, x19
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_MEMCPY
+ mov x25, x0
+ mov x0, x19
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
@@ -170,18 +149,6 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
; gcrRegs +[x0]
mov x2, x0
; gcrRegs +[x2]- mov x1, x21
- ; gcrRegs +[x1]
- mov x0, x23
- ; gcrRegs -[x0]
- movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2 x21] +[x0]
- mov x2, x0
- ; gcrRegs +[x2] mov x1, x22
; gcrRegs +[x1]
mov x0, x23
@@ -192,6 +159,18 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
ldr x3, [x3]
blr x3
; gcrRegs -[x1-x2 x22] +[x0]+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x21
+ ; gcrRegs +[x1]
+ mov x0, x25...
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x20 single-def
-; V01 TypeCtx [V01,T01] ( 5, 3.60) long -> x0 single-def
-; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x2 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>+; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x21 single-def
+; V01 TypeCtx [V01,T01] ( 5, 4.50) long -> x20 single-def
+; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]> ; V03 arg1 [V03,T00] ( 4, 7 ) byref -> x19 ld-addr-op single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -19,83 +19,80 @@
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref "field V03._exception (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._tag (fldOffset=0x10)" P-INDEP
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>-; V11 tmp7 [V11,T06] ( 2, 2 ) long -> x0 "argument with side effect"
-; V12 rat0 [V12,T05] ( 3, 2 ) long -> x0 "runtime lookup"
-; V13 rat1 [V13,T04] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V11 tmp7 [V11,T04] ( 2, 2 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 16
G_M63339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- stp fp, lr, [sp, #-0x30]!+ stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20]+ stp x21, x22, [sp, #0x30] mov fp, sp
str x0, [fp, #0x18]+ mov x20, x0
+ mov x22, x1
+ ; gcrRegs +[x22] mov x19, x2
; byrRegs +[x19]- mov x20, x8
- ; byrRegs +[x20]
- mov x2, x1
- ; gcrRegs +[x2]
- ;; size=28 bbWeight=1 PerfScore 5.00
-G_M63339_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz
- ldr w1, [x19, #0x10]
- cmp w1, #1
- beq G_M63339_IG08
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- ; gcrRegs -[x2]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M63339_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M63339_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
- mov x0, x2
- b G_M63339_IG06
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M63339_IG05: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref+ mov x21, x8
+ ; byrRegs +[x21]
+ ;; size=36 bbWeight=1 PerfScore 6.50
+G_M63339_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+ mov x0, x20 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD+ bl CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ ldr w0, [x19, #0x10]
+ cmp w0, #1
+ beq G_M63339_IG05
+ ;; size=32 bbWeight=1 PerfScore 7.50
+G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+ ; gcrRegs -[x22]
+ mov x0, x20
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_MEMCPY ; gcr arg pop 0- ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M63339_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref ldr x1, [x19]
; gcrRegs +[x1]- mov x8, x20+ mov x8, x21 ; byrRegs +[x8]
movz x2, #0xD1FFAB1E // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M63339_IG07: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=44 bbWeight=0.50 PerfScore 5.50
+G_M63339_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 br x2
; gcr arg pop 0- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63339_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref
- ; gcrRegs -[x1] +[x2]+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M63339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref
+ ; gcrRegs -[x1] +[x22] ; byrRegs -[x8 x19]- mov x0, x2+ mov x0, x22 ; gcrRegs +[x0]- mov x8, x20+ mov x8, x21 ; byrRegs +[x8]
mov x1, xzr- ldr x2, [x2]
- ; gcrRegs -[x2]+ ldr x2, [x22] ldr x2, [x2, #0x48]
ldr x2, [x2, #0x20]
;; size=24 bbWeight=0.50 PerfScore 5.25-G_M63339_IG09: ; bbWeight=0.50, epilog, nogc, extend+G_M63339_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]- ldp fp, lr, [sp], #0x30+ ldp fp, lr, [sp], #0x40 br x2
; gcr arg pop 0- ;; size=12 bbWeight=0.50 PerfScore 1.50+ ;; size=16 bbWeight=0.50 PerfScore 2.00 -; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)+; Total bytes of code 168, prolog size 36, PerfScore 28.75, instruction count 42, allocated bytes for code 168 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -106,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 37 (0x00025) Actual length = 148 (0x000094)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,9 +114,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]- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
E4 end
E4 end
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 138 | 108 | 4 | 26 | -5,724 | +32 |
benchmarks.run_pgo.windows.arm64.checked.mch | 354 | 303 | 19 | 32 | -20,564 | +152 |
benchmarks.run_tiered.windows.arm64.checked.mch | 276 | 238 | 2 | 36 | -17,652 | +28 |
coreclr_tests.run.windows.arm64.checked.mch | 6 | 6 | 0 | 0 | -176 | +0 |
libraries.crossgen2.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.windows.arm64.checked.mch | 424 | 324 | 8 | 92 | -11,248 | +900 |
libraries_tests.run.windows.arm64.Release.mch | 234 | 226 | 0 | 8 | -20,616 | +0 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 196 | 136 | 16 | 44 | -7,596 | +428 |
realworld.run.windows.arm64.checked.mch | 353 | 319 | 14 | 20 | -17,500 | +408 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
1,981 | 1,660 | 63 | 258 | -101,076 | +1,948 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 4,618 | 1 | 4,617 | 9 (0.10%) | 3,753 (42.81%) |
benchmarks.run_pgo.windows.arm64.checked.mch | 15,006 | 12,537 | 2,469 | 7 (0.03%) | 6,512 (29.72%) |
benchmarks.run_tiered.windows.arm64.checked.mch | 13,988 | 11,891 | 2,097 | 3 (0.02%) | 4,631 (24.35%) |
coreclr_tests.run.windows.arm64.checked.mch | 604 | 3 | 601 | 4 (0.06%) | 5,694 (85.06%) |
libraries.crossgen2.windows.arm64.checked.mch | 7,675 | 10 | 7,665 | 30 (0.26%) | 3,315 (29.11%) |
libraries.pmi.windows.arm64.checked.mch | 16,126 | 0 | 16,126 | 1 (0.00%) | 6,209 (27.32%) |
libraries_tests.run.windows.arm64.Release.mch | 3,308 | 2,559 | 749 | 0 (0.00%) | 3,380 (47.71%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 5,390 | 0 | 5,390 | 1 (0.01%) | 4,109 (41.53%) |
realworld.run.windows.arm64.checked.mch | 9,015 | 1 | 9,014 | 3 (0.02%) | 4,579 (32.73%) |
smoke_tests.nativeaot.windows.arm64.checked.mch | 5,030 | 3 | 5,027 | 165 (1.31%) | 7,148 (56.84%) |
80,760 | 27,005 | 53,755 | 223 (0.17%) | 49,330 (36.80%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 931552 (overridden on cmd)
Total bytes of diff: 925860 (overridden on cmd)
Total bytes of delta: -5692 (-0.61 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
20 : 996.dasm (6.25 % of base)
4 : 4787.dasm (2.70 % of base)
4 : 8432.dasm (4.55 % of base)
4 : 8521.dasm (5.56 % of base)
Top file improvements (bytes):
-328 : 4933.dasm (-23.98 % of base)
-212 : 245.dasm (-30.99 % of base)
-212 : 587.dasm (-33.12 % of base)
-208 : 3223.dasm (-15.76 % of base)
-184 : 249.dasm (-24.34 % of base)
-184 : 540.dasm (-26.14 % of base)
-156 : 1823.dasm (-29.32 % of base)
-144 : 3680.dasm (-15.06 % of base)
-136 : 7236.dasm (-30.63 % of base)
-132 : 1561.dasm (-19.30 % of base)
-128 : 7790.dasm (-25.81 % of base)
-128 : 475.dasm (-18.71 % of base)
-128 : 1678.dasm (-27.12 % of base)
-100 : 214.dasm (-19.84 % of base)
-100 : 3363.dasm (-24.04 % of base)
-100 : 7686.dasm (-20.49 % of base)
-92 : 3359.dasm (-22.12 % of base)
-72 : 3938.dasm (-23.38 % of base)
-72 : 7697.dasm (-13.33 % of base)
-72 : 3505.dasm (-21.95 % of base)
46 total files with Code Size differences (42 improved, 4 regressed), 24 unchanged.
Top method regressions (bytes):
20 (6.25 % of base) : 996.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
4 (2.70 % of base) : 4787.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
4 (5.56 % of base) : 8521.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
4 (4.55 % of base) : 8432.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
Top method improvements (bytes):
-328 (-23.98 % of base) : 4933.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-15.76 % of base) : 3223.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
-184 (-24.34 % of base) : 249.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 540.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-156 (-29.32 % of base) : 1823.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-144 (-15.06 % of base) : 3680.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
-136 (-30.63 % of base) : 7236.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.30 % of base) : 1561.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-128 (-27.12 % of base) : 1678.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-128 (-25.81 % of base) : 7790.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-128 (-18.71 % of base) : 475.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-20.49 % of base) : 7686.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-100 (-24.04 % of base) : 3363.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-100 (-19.84 % of base) : 214.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
-92 (-22.12 % of base) : 3359.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-21.95 % of base) : 3505.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetAttribute[System.__Canon](System.Object):System.__Canon (FullOpts)
-72 (-13.33 % of base) : 7697.dasm - ProtoBuf.ProtoReader+State:ReadRepeatedCore[System.__Canon,ProtoBuf.Internal.ReadBuffer`1[System.__Canon],System.__Canon](byref,int,int,byref,System.__Canon):this (FullOpts)
-72 (-24.00 % of base) : 248.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
20 (6.25 % of base) : 996.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
4 (5.56 % of base) : 8521.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
4 (4.55 % of base) : 8432.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
4 (2.70 % of base) : 4787.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-52 (-30.95 % of base) : 8771.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 7236.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-156 (-29.32 % of base) : 1823.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-128 (-27.12 % of base) : 1678.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-52 (-27.08 % of base) : 7601.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-184 (-26.14 % of base) : 540.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-128 (-25.81 % of base) : 7790.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-72 (-25.00 % of base) : 1131.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-44 (-25.00 % of base) : 4693.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-44 (-24.44 % of base) : 7336.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-44 (-24.44 % of base) : 1134.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 249.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-24.04 % of base) : 3363.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-72 (-24.00 % of base) : 248.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 4933.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-44 (-23.91 % of base) : 7180.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-72 (-23.38 % of base) : 7251.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-72 (-23.38 % of base) : 3938.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2407116 (overridden on cmd)
Total bytes of diff: 2386704 (overridden on cmd)
Total bytes of delta: -20412 (-0.85 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
8 : 10527.dasm (6.06 % of base)
8 : 14568.dasm (6.06 % of base)
8 : 15306.dasm (6.06 % of base)
8 : 2823.dasm (6.06 % of base)
8 : 6938.dasm (6.06 % of base)
8 : 6971.dasm (6.06 % of base)
8 : 12967.dasm (6.06 % of base)
8 : 19267.dasm (6.06 % of base)
8 : 19678.dasm (6.06 % of base)
8 : 2785.dasm (6.06 % of base)
8 : 11612.dasm (6.06 % of base)
8 : 12310.dasm (6.06 % of base)
8 : 14388.dasm (6.06 % of base)
8 : 14856.dasm (6.06 % of base)
8 : 16489.dasm (6.06 % of base)
8 : 16644.dasm (6.06 % of base)
8 : 15983.dasm (6.06 % of base)
8 : 16168.dasm (6.06 % of base)
8 : 3056.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 1892.dasm (-43.85 % of base)
-428 : 732.dasm (-42.63 % of base)
-372 : 1765.dasm (-37.35 % of base)
-372 : 738.dasm (-35.36 % of base)
-372 : 12589.dasm (-32.98 % of base)
-332 : 20046.dasm (-29.75 % of base)
-316 : 11244.dasm (-38.54 % of base)
-316 : 17924.dasm (-37.44 % of base)
-296 : 13910.dasm (-39.78 % of base)
-260 : 12297.dasm (-39.88 % of base)
-260 : 1619.dasm (-27.66 % of base)
-260 : 13606.dasm (-40.37 % of base)
-260 : 14630.dasm (-35.71 % of base)
-260 : 13457.dasm (-40.37 % of base)
-240 : 282.dasm (-32.97 % of base)
-212 : 13480.dasm (-32.12 % of base)
-212 : 15416.dasm (-33.12 % of base)
-212 : 16917.dasm (-33.12 % of base)
-212 : 14684.dasm (-33.12 % of base)
-212 : 21233.dasm (-33.12 % of base)
68 total files with Code Size differences (49 improved, 19 regressed), 20 unchanged.
Top method regressions (bytes):
8 (6.06 % of base) : 10527.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14568.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15306.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2823.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6938.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6971.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 12967.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19267.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19678.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2785.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 11612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 12310.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14388.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14856.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16489.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16644.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15983.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 3056.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-428 (-42.63 % of base) : 732.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 1892.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-32.98 % of base) : 12589.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-372 (-35.36 % of base) : 738.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 1765.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-332 (-29.75 % of base) : 20046.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
-316 (-38.54 % of base) : 11244.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 17924.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 13910.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-39.88 % of base) : 12297.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 13606.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 13457.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-35.71 % of base) : 14630.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1619.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 282.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-32.12 % of base) : 13480.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 15416.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 16917.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 14684.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 21233.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
Top method regressions (percentages):
8 (6.06 % of base) : 10527.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14568.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15306.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2823.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6938.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6971.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 12967.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19267.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19678.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2785.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 11612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 12310.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14388.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 14856.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16489.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16644.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15983.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 3056.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-428 (-43.85 % of base) : 1892.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 732.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-41.82 % of base) : 17286.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 17752.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 20756.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 13606.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 13457.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-39.88 % of base) : 12297.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 13910.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-148 (-39.78 % of base) : 11366.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-316 (-38.54 % of base) : 11244.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-38.33 % of base) : 14336.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 14254.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-148 (-37.76 % of base) : 4196.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 17924.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-372 (-37.35 % of base) : 1765.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-37.00 % of base) : 1878.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 11243.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 13652.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 4198.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2106448 (overridden on cmd)
Total bytes of diff: 2088824 (overridden on cmd)
Total bytes of delta: -17624 (-0.84 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
20 : 15297.dasm (6.25 % of base)
8 : 1012.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 1723.dasm (-43.85 % of base)
-428 : 689.dasm (-42.63 % of base)
-372 : 695.dasm (-35.36 % of base)
-372 : 1622.dasm (-37.35 % of base)
-332 : 17277.dasm (-29.75 % of base)
-316 : 8118.dasm (-37.44 % of base)
-316 : 2891.dasm (-38.54 % of base)
-296 : 6833.dasm (-39.78 % of base)
-260 : 15172.dasm (-40.37 % of base)
-260 : 14905.dasm (-35.71 % of base)
-260 : 8969.dasm (-39.88 % of base)
-260 : 1473.dasm (-27.66 % of base)
-240 : 273.dasm (-32.97 % of base)
-212 : 2772.dasm (-33.12 % of base)
-204 : 7662.dasm (-23.50 % of base)
-204 : 8973.dasm (-32.69 % of base)
-204 : 4364.dasm (-30.00 % of base)
-204 : 7989.dasm (-32.28 % of base)
-204 : 623.dasm (-30.18 % of base)
-184 : 6770.dasm (-24.34 % of base)
52 total files with Code Size differences (50 improved, 2 regressed), 28 unchanged.
Top method regressions (bytes):
20 (6.25 % of base) : 15297.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
8 (6.06 % of base) : 1012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-428 (-42.63 % of base) : 689.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 1723.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 695.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 1622.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-332 (-29.75 % of base) : 17277.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
-316 (-38.54 % of base) : 2891.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 8118.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 6833.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-39.88 % of base) : 8969.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 15172.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-35.71 % of base) : 14905.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1473.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 273.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 2772.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-32.28 % of base) : 7989.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-23.50 % of base) : 7662.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
-204 (-30.00 % of base) : 4364.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-32.69 % of base) : 8973.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-30.18 % of base) : 623.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
-184 (-24.34 % of base) : 6770.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier1)
Top method regressions (percentages):
20 (6.25 % of base) : 15297.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
8 (6.06 % of base) : 1012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-428 (-43.85 % of base) : 1723.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 689.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-41.82 % of base) : 7352.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 7867.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 17813.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 15172.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-39.88 % of base) : 8969.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-296 (-39.78 % of base) : 6833.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-148 (-39.78 % of base) : 3035.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-316 (-38.54 % of base) : 2891.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-38.33 % of base) : 16767.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 14638.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-148 (-37.76 % of base) : 5444.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-316 (-37.44 % of base) : 8118.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-372 (-37.35 % of base) : 1622.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-37.00 % of base) : 1709.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 2890.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 15324.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 5446.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-148 (-36.27 % of base) : 9261.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 171896 (overridden on cmd)
Total bytes of diff: 171720 (overridden on cmd)
Total bytes of delta: -176 (-0.10 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-48 : 503.dasm (-9.84 % of base)
-44 : 20430.dasm (-24.44 % of base)
-24 : 20442.dasm (-20.69 % of base)
-20 : 20434.dasm (-12.50 % of base)
-20 : 20178.dasm (-9.26 % of base)
-20 : 20158.dasm (-12.20 % of base)
6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-48 (-9.84 % of base) : 503.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
-44 (-24.44 % of base) : 20430.dasm - Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-24 (-20.69 % of base) : 20442.dasm - Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-20 (-9.26 % of base) : 20178.dasm - GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)
-20 (-12.50 % of base) : 20434.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)
-20 (-12.20 % of base) : 20158.dasm - Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)
Top method improvements (percentages):
-44 (-24.44 % of base) : 20430.dasm - Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-24 (-20.69 % of base) : 20442.dasm - Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-20 (-12.50 % of base) : 20434.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)
-20 (-12.20 % of base) : 20158.dasm - Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)
-48 (-9.84 % of base) : 503.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
-20 (-9.26 % of base) : 20178.dasm - GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)
6 total methods with Code Size differences (6 improved, 0 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1252856 (overridden on cmd)
Total bytes of diff: 1242508 (overridden on cmd)
Total bytes of delta: -10348 (-0.83 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
804 : 7713.dasm (88.16 % of base)
24 : 16156.dasm (22.22 % of base)
20 : 11587.dasm (4.50 % of base)
20 : 11585.dasm (6.02 % of base)
12 : 754.dasm (8.11 % of base)
12 : 16157.dasm (6.00 % of base)
4 : 19305.dasm (1.56 % of base)
4 : 19309.dasm (0.81 % of base)
Top file improvements (bytes):
-136 : 24686.dasm (-26.36 % of base)
-128 : 15354.dasm (-28.07 % of base)
-128 : 19361.dasm (-28.32 % of base)
-108 : 15348.dasm (-30.00 % of base)
-108 : 15349.dasm (-30.00 % of base)
-108 : 16427.dasm (-24.77 % of base)
-100 : 15344.dasm (-27.78 % of base)
-100 : 15345.dasm (-27.78 % of base)
-100 : 15346.dasm (-27.78 % of base)
-100 : 15347.dasm (-27.78 % of base)
-100 : 15350.dasm (-27.78 % of base)
-100 : 16421.dasm (-28.74 % of base)
-100 : 16423.dasm (-20.66 % of base)
-100 : 16425.dasm (-28.74 % of base)
-100 : 16618.dasm (-28.74 % of base)
-100 : 16672.dasm (-28.74 % of base)
-100 : 16676.dasm (-28.74 % of base)
-100 : 20358.dasm (-20.66 % of base)
-100 : 20608.dasm (-24.51 % of base)
-100 : 21494.dasm (-12.02 % of base)
54 total files with Code Size differences (46 improved, 8 regressed), 30 unchanged.
Top method regressions (bytes):
804 (88.16 % of base) : 7713.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
24 (22.22 % of base) : 16156.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
20 (4.50 % of base) : 11587.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
20 (6.02 % of base) : 11585.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
12 (8.11 % of base) : 754.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)
12 (6.00 % of base) : 16157.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuations[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Runtime.ExceptionServices.ExceptionDispatchInfo,Microsoft.FSharp.Control.AsyncReturn]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
4 (0.81 % of base) : 19309.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (1.56 % of base) : 19305.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (bytes):
-136 (-26.36 % of base) : 24686.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-128 (-28.07 % of base) : 15354.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Map[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:this (FullOpts)
-128 (-28.32 % of base) : 19361.dasm - Microsoft.FSharp.Control.AsyncPrimitives:StartAsTask[System.__Canon](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-108 (-30.00 % of base) : 15348.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[double](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],double):double:this (FullOpts)
-108 (-30.00 % of base) : 15349.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this (FullOpts)
-108 (-24.77 % of base) : 16427.dasm - Microsoft.FSharp.Control.TaskBuilder:RunDynamic[System.__Canon](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-100 (-27.78 % of base) : 15347.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int):int:this (FullOpts)
-100 (-27.78 % of base) : 15350.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[long](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],long):long:this (FullOpts)
-100 (-27.78 % of base) : 15346.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[short](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],short):short:this (FullOpts)
-100 (-27.78 % of base) : 15344.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (FullOpts)
-100 (-27.78 % of base) : 15345.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],ubyte):ubyte:this (FullOpts)
-100 (-20.66 % of base) : 16423.dasm - Microsoft.FSharp.Control.TaskBuilderBase:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.Nullable`1[int]],Microsoft.FSharp.Core.Unit]:this (FullOpts)
-100 (-28.74 % of base) : 16421.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16425.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-100 (-20.66 % of base) : 20358.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.Nullable`1[int],Microsoft.FSharp.Core.Unit] (FullOpts)
-100 (-12.02 % of base) : 21494.dasm - Microsoft.FSharp.Core.PrintfImpl+ObjectPrinter:GenericToString[System.__Canon](Microsoft.FSharp.Core.PrintfImpl+FormatSpecifier):Microsoft.FSharp.Core.PrintfImpl+ValueConverter (FullOpts)
-100 (-28.74 % of base) : 16672.dasm - Microsoft.FSharp.Linq.QueryBuilder:SkipWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16676.dasm - Microsoft.FSharp.Linq.QueryBuilder:TakeWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16618.dasm - Microsoft.FSharp.Linq.QueryBuilder:Where[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-100 (-24.51 % of base) : 20608.dasm - Microsoft.FSharp.Quotations.PatternsModule:loop@495-48[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
804 (88.16 % of base) : 7713.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
24 (22.22 % of base) : 16156.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
12 (8.11 % of base) : 754.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)
20 (6.02 % of base) : 11585.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
12 (6.00 % of base) : 16157.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuations[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Runtime.ExceptionServices.ExceptionDispatchInfo,Microsoft.FSharp.Control.AsyncReturn]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
20 (4.50 % of base) : 11587.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
4 (1.56 % of base) : 19305.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (0.81 % of base) : 19309.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (percentages):
-56 (-32.56 % of base) : 319.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-44 (-30.56 % of base) : 23714.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
-44 (-30.56 % of base) : 16406.dasm - Microsoft.FSharp.Control.TaskBuilderBase:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]:this (FullOpts)
-44 (-30.56 % of base) : 20362.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
-44 (-30.56 % of base) : 20332.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
-72 (-30.00 % of base) : 23762.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:SortDescending[System.__Canon](System.__Canon[]):System.__Canon[] (FullOpts)
-108 (-30.00 % of base) : 15348.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[double](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],double):double:this (FullOpts)
-108 (-30.00 % of base) : 15349.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this (FullOpts)
-72 (-29.51 % of base) : 644.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.CollectionExtensions:ToArray[System.__Canon](System.Collections.Generic.IList`1[System.__Canon]):System.__Canon[] (FullOpts)
-100 (-28.74 % of base) : 16421.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16425.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16672.dasm - Microsoft.FSharp.Linq.QueryBuilder:SkipWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16676.dasm - Microsoft.FSharp.Linq.QueryBuilder:TakeWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-100 (-28.74 % of base) : 16618.dasm - Microsoft.FSharp.Linq.QueryBuilder:Where[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-72 (-28.57 % of base) : 16330.dasm - Microsoft.FSharp.Control.FSharpAsyncBuilder:Combine[System.__Canon](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]:this (FullOpts)
-128 (-28.32 % of base) : 19361.dasm - Microsoft.FSharp.Control.AsyncPrimitives:StartAsTask[System.__Canon](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-72 (-28.12 % of base) : 22994.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
-72 (-28.12 % of base) : 19328.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-128 (-28.07 % of base) : 15354.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Map[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:this (FullOpts)
-100 (-27.78 % of base) : 15347.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int):int:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 615412 (overridden on cmd)
Total bytes of diff: 594796 (overridden on cmd)
Total bytes of delta: -20616 (-3.35 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-428 : 51.dasm (-43.85 % of base)
-428 : 30.dasm (-41.96 % of base)
-372 : 141.dasm (-36.19 % of base)
-372 : 2310.dasm (-36.47 % of base)
-316 : 5142.dasm (-40.10 % of base)
-296 : 2870.dasm (-39.78 % of base)
-260 : 147.dasm (-40.37 % of base)
-260 : 2338.dasm (-28.14 % of base)
-260 : 418.dasm (-40.37 % of base)
-212 : 1733.dasm (-33.12 % of base)
-212 : 6871.dasm (-33.12 % of base)
-212 : 928.dasm (-33.12 % of base)
-204 : 2544.dasm (-32.48 % of base)
-188 : 1817.dasm (-23.86 % of base)
-188 : 4349.dasm (-23.86 % of base)
-188 : 1629.dasm (-23.86 % of base)
-188 : 1717.dasm (-23.86 % of base)
-188 : 2045.dasm (-23.86 % of base)
-188 : 4661.dasm (-23.86 % of base)
-188 : 913.dasm (-23.86 % of base)
64 total files with Code Size differences (64 improved, 0 regressed), 8 unchanged.
Top method improvements (bytes):
-428 (-41.96 % of base) : 30.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-428 (-43.85 % of base) : 51.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-36.47 % of base) : 2310.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-36.19 % of base) : 141.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-316 (-40.10 % of base) : 5142.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 2870.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 418.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 147.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-260 (-28.14 % of base) : 2338.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-212 (-33.12 % of base) : 1733.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 6871.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 928.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-32.48 % of base) : 2544.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-188 (-23.86 % of base) : 1817.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-188 (-23.86 % of base) : 4349.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-188 (-23.86 % of base) : 1629.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-188 (-23.86 % of base) : 1717.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-188 (-23.86 % of base) : 2045.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-188 (-23.86 % of base) : 4661.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-188 (-23.86 % of base) : 913.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
Top method improvements (percentages):
-428 (-43.85 % of base) : 51.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 30.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 418.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-260 (-40.37 % of base) : 147.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-316 (-40.10 % of base) : 5142.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-296 (-39.78 % of base) : 2870.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-148 (-39.78 % of base) : 17.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-148 (-39.78 % of base) : 5231.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier0)
-92 (-37.70 % of base) : 4959.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon) (Tier0)
-92 (-37.70 % of base) : 5012.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-92 (-37.70 % of base) : 5198.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
-92 (-37.70 % of base) : 2380.dasm - Xunit.Sdk.CollectionExtensions:CastOrToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-92 (-37.10 % of base) : 3158.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon],Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref,byref) (Tier0)
-148 (-37.00 % of base) : 4089.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-36.63 % of base) : 5135.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-92 (-36.51 % of base) : 2543.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 2491.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-372 (-36.47 % of base) : 2310.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-148 (-36.27 % of base) : 116.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-372 (-36.19 % of base) : 141.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1045188 (overridden on cmd)
Total bytes of diff: 1038020 (overridden on cmd)
Total bytes of delta: -7168 (-0.69 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
68 : 6099.dasm (8.99 % of base)
64 : 10709.dasm (11.76 % of base)
64 : 4071.dasm (5.39 % of base)
48 : 6652.dasm (16.67 % of base)
28 : 8646.dasm (9.21 % of base)
24 : 2983.dasm (6.59 % of base)
24 : 6207.dasm (31.58 % of base)
24 : 8002.dasm (23.08 % of base)
20 : 13021.dasm (4.39 % of base)
20 : 69.dasm (6.25 % of base)
20 : 9146.dasm (16.13 % of base)
8 : 2064.dasm (1.36 % of base)
4 : 8709.dasm (4.35 % of base)
4 : 8710.dasm (1.89 % of base)
4 : 4438.dasm (3.45 % of base)
4 : 8457.dasm (3.45 % of base)
Top file improvements (bytes):
-384 : 10697.dasm (-25.26 % of base)
-328 : 991.dasm (-22.47 % of base)
-328 : 3142.dasm (-23.98 % of base)
-212 : 3499.dasm (-12.62 % of base)
-212 : 10.dasm (-30.99 % of base)
-212 : 13.dasm (-33.33 % of base)
-200 : 3149.dasm (-19.69 % of base)
-184 : 457.dasm (-24.34 % of base)
-184 : 67.dasm (-26.14 % of base)
-176 : 3391.dasm (-27.85 % of base)
-160 : 759.dasm (-17.62 % of base)
-156 : 4404.dasm (-21.91 % of base)
-136 : 6205.dasm (-18.68 % of base)
-136 : 2311.dasm (-30.63 % of base)
-132 : 488.dasm (-19.76 % of base)
-128 : 470.dasm (-18.71 % of base)
-128 : 7872.dasm (-29.91 % of base)
-128 : 845.dasm (-27.12 % of base)
-100 : 2221.dasm (-24.04 % of base)
-100 : 620.dasm (-21.93 % of base)
63 total files with Code Size differences (47 improved, 16 regressed), 22 unchanged.
Top method regressions (bytes):
68 (8.99 % of base) : 6099.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
64 (11.76 % of base) : 10709.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
64 (5.39 % of base) : 4071.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
48 (16.67 % of base) : 6652.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
28 (9.21 % of base) : 8646.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
24 (23.08 % of base) : 8002.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
24 (31.58 % of base) : 6207.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
24 (6.59 % of base) : 2983.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
20 (4.39 % of base) : 13021.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):int:this (FullOpts)
20 (16.13 % of base) : 9146.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
8 (1.36 % of base) : 2064.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
4 (1.89 % of base) : 8710.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (4.35 % of base) : 8709.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.45 % of base) : 4438.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.45 % of base) : 8457.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-384 (-25.26 % of base) : 10697.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
-328 (-22.47 % of base) : 991.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-328 (-23.98 % of base) : 3142.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-212 (-12.62 % of base) : 3499.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.33 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-200 (-19.69 % of base) : 3149.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 457.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-176 (-27.85 % of base) : 3391.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-160 (-17.62 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-156 (-21.91 % of base) : 4404.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-136 (-18.68 % of base) : 6205.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
-136 (-30.63 % of base) : 2311.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.76 % of base) : 488.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
-128 (-27.12 % of base) : 845.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-128 (-18.71 % of base) : 470.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-128 (-29.91 % of base) : 7872.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-100 (-24.04 % of base) : 2221.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-100 (-21.93 % of base) : 620.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
Top method regressions (percentages):
24 (31.58 % of base) : 6207.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
24 (23.08 % of base) : 8002.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
48 (16.67 % of base) : 6652.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
20 (16.13 % of base) : 9146.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
64 (11.76 % of base) : 10709.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
28 (9.21 % of base) : 8646.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
68 (8.99 % of base) : 6099.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
24 (6.59 % of base) : 2983.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
64 (5.39 % of base) : 4071.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
20 (4.39 % of base) : 13021.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):int:this (FullOpts)
4 (4.35 % of base) : 8709.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.45 % of base) : 4438.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (3.45 % of base) : 8457.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
4 (1.89 % of base) : 8710.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
8 (1.36 % of base) : 2064.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
Top method improvements (percentages):
-212 (-33.33 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-24 (-31.58 % of base) : 2244.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 2311.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-72 (-30.51 % of base) : 5750.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-128 (-29.91 % of base) : 7872.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-72 (-28.12 % of base) : 8467.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (FullOpts)
-176 (-27.85 % of base) : 3391.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-128 (-27.12 % of base) : 845.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-44 (-26.19 % of base) : 2361.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-72 (-25.71 % of base) : 3250.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
-384 (-25.26 % of base) : 10697.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
-72 (-25.00 % of base) : 50.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-44 (-24.44 % of base) : 3228.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
-44 (-24.44 % of base) : 587.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-184 (-24.34 % of base) : 457.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-52 (-24.07 % of base) : 4168.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-100 (-24.04 % of base) : 2221.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-24 (-24.00 % of base) : 2407.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1675344 (overridden on cmd)
Total bytes of diff: 1658252 (overridden on cmd)
Total bytes of delta: -17092 (-1.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
124 : 6210.dasm (12.55 % of base)
48 : 5861.dasm (10.62 % of base)
48 : 5872.dasm (10.62 % of base)
48 : 5882.dasm (10.81 % of base)
48 : 5885.dasm (10.62 % of base)
20 : 8920.dasm (13.51 % of base)
20 : 14679.dasm (6.10 % of base)
16 : 5809.dasm (8.51 % of base)
8 : 10612.dasm (5.88 % of base)
8 : 10340.dasm (3.03 % of base)
8 : 2049.dasm (4.26 % of base)
4 : 12219.dasm (5.56 % of base)
4 : 2284.dasm (1.59 % of base)
4 : 4695.dasm (0.98 % of base)
Top file improvements (bytes):
-328 : 3243.dasm (-24.33 % of base)
-328 : 9573.dasm (-29.29 % of base)
-228 : 8856.dasm (-28.22 % of base)
-212 : 245.dasm (-30.99 % of base)
-212 : 586.dasm (-33.12 % of base)
-208 : 6045.dasm (-23.01 % of base)
-208 : 7527.dasm (-23.42 % of base)
-200 : 5122.dasm (-11.79 % of base)
-188 : 12498.dasm (-23.86 % of base)
-184 : 249.dasm (-24.34 % of base)
-184 : 539.dasm (-26.14 % of base)
-172 : 5224.dasm (-28.48 % of base)
-172 : 8239.dasm (-22.63 % of base)
-172 : 9572.dasm (-18.53 % of base)
-164 : 4919.dasm (-22.04 % of base)
-152 : 9574.dasm (-14.02 % of base)
-144 : 8206.dasm (-20.11 % of base)
-144 : 9901.dasm (-24.16 % of base)
-144 : 6005.dasm (-20.81 % of base)
-144 : 6205.dasm (-21.95 % of base)
69 total files with Code Size differences (55 improved, 14 regressed), 20 unchanged.
Top method regressions (bytes):
124 (12.55 % of base) : 6210.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
48 (10.81 % of base) : 5882.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5885.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5872.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5861.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
20 (13.51 % of base) : 8920.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
20 (6.10 % of base) : 14679.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
16 (8.51 % of base) : 5809.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
8 (3.03 % of base) : 10340.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
8 (4.26 % of base) : 2049.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (5.88 % of base) : 10612.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (0.98 % of base) : 4695.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (1.59 % of base) : 2284.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (5.56 % of base) : 12219.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
Top method improvements (bytes):
-328 (-29.29 % of base) : 9573.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-328 (-24.33 % of base) : 3243.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-228 (-28.22 % of base) : 8856.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-33.12 % of base) : 586.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-23.01 % of base) : 6045.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-208 (-23.42 % of base) : 7527.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
-200 (-11.79 % of base) : 5122.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-188 (-23.86 % of base) : 12498.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-24.34 % of base) : 249.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 539.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-172 (-22.63 % of base) : 8239.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-172 (-18.53 % of base) : 9572.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-172 (-28.48 % of base) : 5224.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-164 (-22.04 % of base) : 4919.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-152 (-14.02 % of base) : 9574.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-144 (-20.81 % of base) : 6005.dasm - Microsoft.FSharp.Primitives.Basics.List:map2[System.__Canon,ubyte,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[ubyte]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-144 (-20.11 % of base) : 8206.dasm - Microsoft.FSharp.Primitives.Basics.List:mapi2[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-144 (-24.16 % of base) : 9901.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3ToFreshConsTail[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]) (FullOpts)
-144 (-21.95 % of base) : 6205.dasm - Microsoft.FSharp.Primitives.Basics.List:zip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
20 (13.51 % of base) : 8920.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
124 (12.55 % of base) : 6210.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
48 (10.81 % of base) : 5882.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5885.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5872.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
48 (10.62 % of base) : 5861.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
16 (8.51 % of base) : 5809.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
20 (6.10 % of base) : 14679.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
8 (5.88 % of base) : 10612.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (5.56 % of base) : 12219.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
8 (4.26 % of base) : 2049.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (3.03 % of base) : 10340.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
4 (1.59 % of base) : 2284.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
4 (0.98 % of base) : 4695.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (percentages):
-60 (-33.33 % of base) : 8490.dasm - FSharp.Compiler.NameResolution:CollectResults2[System.__Canon,System.__Canon](FSharp.Compiler.NameResolution+ResultCollectionSettings,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]] (FullOpts)
-212 (-33.12 % of base) : 586.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-60 (-32.61 % of base) : 10344.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 10840.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-56 (-30.43 % of base) : 7466.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-100 (-29.41 % of base) : 4713.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-100 (-29.41 % of base) : 4962.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-80 (-29.41 % of base) : 5640.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
-80 (-29.41 % of base) : 9778.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-328 (-29.29 % of base) : 9573.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-172 (-28.48 % of base) : 5224.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-100 (-28.41 % of base) : 8952.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-228 (-28.22 % of base) : 8856.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-80 (-28.17 % of base) : 4705.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 5220.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 9914.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:toSeq[System.__Canon,System.__Canon](Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-28.12 % of base) : 4588.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-72 (-28.12 % of base) : 10337.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIEnumerator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-72 (-28.12 % of base) : 4960.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
Diffs are based on 79,883 contexts (35,475 MinOpts, 44,408 FullOpts).
MISSED contexts: base: 47 (0.04%), diff: 46,452 (35.54%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 933,140 | -3,514 |
benchmarks.run.windows.x64.checked.mch | 638,956 | -3,579 |
benchmarks.run_pgo.windows.x64.checked.mch | 1,821,224 | -14,091 |
benchmarks.run_tiered.windows.x64.checked.mch | 1,565,006 | -14,674 |
coreclr_tests.run.windows.x64.checked.mch | 105,015 | +31 |
libraries.pmi.windows.x64.checked.mch | 693,716 | -17,504 |
libraries_tests.run.windows.x64.Release.mch | 1,095,020 | -17,843 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 838,544 | -6,155 |
realworld.run.windows.x64.checked.mch | 1,799,819 | -16,360 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 566,790 | -3,837 |
benchmarks.run_pgo.windows.x64.checked.mch | 1,304,129 | -13,077 |
benchmarks.run_tiered.windows.x64.checked.mch | 1,425,424 | -14,093 |
libraries_tests.run.windows.x64.Release.mch | 833,618 | -15,368 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 366,350 | +323 |
benchmarks.run.windows.x64.checked.mch | 638,882 | -3,579 |
benchmarks.run_pgo.windows.x64.checked.mch | 517,095 | -1,014 |
benchmarks.run_tiered.windows.x64.checked.mch | 139,582 | -581 |
coreclr_tests.run.windows.x64.checked.mch | 105,015 | +31 |
libraries.pmi.windows.x64.checked.mch | 693,716 | -17,504 |
libraries_tests.run.windows.x64.Release.mch | 261,402 | -2,475 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 838,544 | -6,155 |
realworld.run.windows.x64.checked.mch | 1,799,819 | -16,360 |
@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x10]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M41558_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x10]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M41558_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
call [<unknown method>]
; gcrRegs +[rax]
nop - ;; size=11 bbWeight=1 PerfScore 4.25
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=34 bbWeight=1 PerfScore 7.50
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 91, prolog size 14, PerfScore 23.80, instruction count 24, allocated bytes for code 91 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 58, prolog size 14, PerfScore 13.00, instruction count 15, allocated bytes for code 58 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x10]
- cmp qword ptr [rax+0x18], 0
- je SHORT G_M34046_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x10]
- mov rax, qword ptr [rax+0x18]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M34046_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
xor rdx, rdx
; gcrRegs +[rdx]
@@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
nop - ;; size=16 bbWeight=1 PerfScore 4.75
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=39 bbWeight=1 PerfScore 8.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 96 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 63, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 63 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -18,26 +18,11 @@ G_M45405_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M45405_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x10]
- cmp qword ptr [rax+0x18], 0
- je SHORT G_M45405_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M45405_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x10]
- mov rax, qword ptr [rax+0x18]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M45405_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M45405_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M45405_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M45405_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
xor rdx, rdx
; gcrRegs +[rdx]
@@ -45,14 +30,14 @@ G_M45405_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
nop - ;; size=19 bbWeight=1 PerfScore 4.75
-G_M45405_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=42 bbWeight=1 PerfScore 8.00
+G_M45405_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 99, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 99 (MethodHash=839d4ea2) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Transient[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 66, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 66 (MethodHash=839d4ea2) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Transient[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -9,14 +9,15 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T01] ( 8, 8 ) double -> mm0 single-def+; V00 arg0 [V00,T01] ( 9, 9 ) double -> mm0 single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp4 [V05,T00] ( 2, 2 ) long -> rax "field V02._ticks (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) long -> zero-ref "field V03._ticks (fldOffset=0x0)" P-INDEP-; V07 cse0 [V07,T02] ( 3, 3 ) double -> mm1 "CSE - aggressive"+; V07 tmp6 [V07,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 cse0 [V08,T03] ( 3, 3 ) double -> mm1 "CSE - aggressive" ;
; Lcl frame size = 40
@@ -38,8 +39,14 @@ G_M20148_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
je SHORT G_M20148_IG06
;; size=42 bbWeight=1 PerfScore 19.00
G_M20148_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si rax, xmm0- ;; size=5 bbWeight=1 PerfScore 6.00+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=51 bbWeight=1 PerfScore 20.50 G_M20148_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
@@ -58,9 +65,12 @@ G_M20148_IG07: ; bbWeight=0, epilog, nogc, extend
;; size=5 bbWeight=0 PerfScore 0.00
RWD00 dq 43E0000000000000h ; 9.22337204e+18
RWD08 dq C3E0000000000000h ; -9.22337204e+18+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 81, prolog size 7, PerfScore 27.50, instruction count 21, allocated bytes for code 81 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1)+; Total bytes of code 127, prolog size 7, PerfScore 42.00, instruction count 27, allocated bytes for code 127 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -7,83 +7,52 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V02 tmp1 [V02,T05] ( 3, 4 ) long -> rsi "spilling helperCall"+; V02 tmp1 [V02,T03] ( 2, 4 ) long -> rsi "spilling helperCall" ;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V04 tmp3 [V04,T01] ( 4, 6 ) long -> rdi "VirtualCall with runtime lookup"
-; V05 tmp4 [V05,T06] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V06 rat0 [V06,T02] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
-; V07 rat1 [V07,T03] ( 3, 5.60) long -> rcx "spilling expr"
-; V08 rat2 [V08,T04] ( 3, 4.48) long -> rdi "fgMakeTemp is creating a new local variable"+; V04 tmp3 [V04,T01] ( 3, 6 ) long -> rbx "VirtualCall with runtime lookup"
+; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> rcx single-def "argument with side effect" ;-; Lcl frame size = 48+; Lcl frame size = 40
G_M57211_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rdi push rsi
push rbx- sub rsp, 48
- mov qword ptr [rsp+0x28], rcx+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx mov rbx, rcx- ;; size=15 bbWeight=1 PerfScore 4.50
-G_M57211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rsi, qword ptr [rcx+0x10]
- test rsi, rsi
- je SHORT G_M57211_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M57211_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M57211_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M57211_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ ;; size=14 bbWeight=1 PerfScore 3.50
+G_M57211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rsi, rax- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M57211_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M57211_IG08
- ;; size=11 bbWeight=1 PerfScore 6.00
-G_M57211_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rcx+0x18]
- test rdi, rdi
- je SHORT G_M57211_IG08
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M57211_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M57211_IG09
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M57211_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdi, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M57211_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov rbx, rax mov rcx, rsi
call [System.Array:Empty[System.__Canon]():System.__Canon[]]
; gcrRegs +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]- mov r11, rdi+ mov r11, rbx cmp dword ptr [rcx], ecx- mov rax, rdi+ mov rax, rbx ; gcrRegs -[rax]- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M57211_IG10: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48+ ;; size=62 bbWeight=1 PerfScore 10.50
+G_M57211_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40 pop rbx
pop rsi- pop rdi tail.jmp [rax]- ;; size=10 bbWeight=1 PerfScore 3.75+ ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 124, prolog size 12, PerfScore 32.96, instruction count 37, allocated bytes for code 124 (MethodHash=f41c2084) for method System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)+; Total bytes of code 85, prolog size 11, PerfScore 17.25, instruction count 23, allocated bytes for code 85 (MethodHash=f41c2084) for method System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -91,12 +60,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x06
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) byref -> rsi single-def
-; V02 arg1 [V02,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V03 loc0 [V03,T10] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rsi single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V03 loc0 [V03,T05] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp3 [V07,T08] ( 2, 4 ) long -> rcx "argument with side effect"
-; V08 tmp4 [V08,T09] ( 2, 4 ) long -> rcx "argument with side effect"
-; V09 rat0 [V09,T06] ( 3, 4 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T07] ( 3, 4 ) long -> rcx "runtime lookup"
-; V12 rat3 [V12,T02] ( 3, 5.60) long -> rcx "spilling expr"
-; V13 rat4 [V13,T05] ( 3, 4.48) long -> rcx "fgMakeTemp is creating a new local variable"+; V07 tmp3 [V07,T03] ( 2, 4 ) long -> rcx "argument with side effect"
+; V08 tmp4 [V08,T04] ( 2, 4 ) long -> rcx "argument with side effect" ;
; Lcl frame size = 48
@@ -36,23 +31,12 @@ G_M58012_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdi, r8
; gcrRegs +[rdi]
;; size=21 bbWeight=1 PerfScore 5.00-G_M58012_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M58012_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M58012_IG03: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- jmp SHORT G_M58012_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M58012_IG04: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref+G_M58012_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M58012_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz mov rdx, rdi
; gcrRegs +[rdx]
call [System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]]
@@ -60,33 +44,18 @@ G_M58012_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]- mov rcx, qword ptr [rbx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M58012_IG08
- ;; size=23 bbWeight=1 PerfScore 9.50
-G_M58012_IG06: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[rax]
- mov rcx, qword ptr [rcx+0x18]
- test rcx, rcx
- je SHORT G_M58012_IG08
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M58012_IG07: ; bbWeight=0.64, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- jmp SHORT G_M58012_IG09
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M58012_IG08: ; bbWeight=0.36, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY
+ ; gcrRegs -[rax] ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M58012_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref mov rdx, rsi
; byrRegs +[rdx]
mov r8, rdi
; gcrRegs +[r8]- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M58012_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=60 bbWeight=1 PerfScore 7.50
+G_M58012_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx
pop rsi
@@ -95,7 +64,7 @@ G_M58012_IG10: ; bbWeight=1, epilog, nogc, extend
; gcr arg pop 0
;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 131, prolog size 12, PerfScore 30.46, instruction count 38, allocated bytes for code 131 (MethodHash=cbe51d63) for method System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)+; Total bytes of code 94, prolog size 12, PerfScore 16.25, instruction count 26, allocated bytes for code 94 (MethodHash=cbe51d63) for method System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -7,20 +7,15 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def ; V01 arg0 [V01 ] ( 3, 3 ) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V03 loc0 [V03,T09] ( 2, 2 ) ref -> rsi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V03 loc0 [V03,T04] ( 2, 2 ) ref -> rsi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> rcx "argument with side effect"
-; V08 tmp4 [V08,T08] ( 2, 4 ) long -> rcx "argument with side effect"
-; V09 rat0 [V09,T05] ( 3, 4 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T06] ( 3, 4 ) long -> rcx "runtime lookup"
-; V12 rat3 [V12,T02] ( 3, 5.60) long -> rcx "spilling expr"
-; V13 rat4 [V13,T04] ( 3, 4.48) long -> rcx "fgMakeTemp is creating a new local variable"+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> rcx "argument with side effect"
+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> rcx "argument with side effect" ;
; Lcl frame size = 40
@@ -34,23 +29,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r8
; gcrRegs +[rsi]
;; size=22 bbWeight=1 PerfScore 4.75-G_M41289_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M41289_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M41289_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref+G_M41289_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M41289_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi
; gcrRegs +[rdx]
call [System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]]
@@ -58,27 +42,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]- mov rcx, qword ptr [rbx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M41289_IG08
- ;; size=23 bbWeight=1 PerfScore 9.50
-G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rcx, qword ptr [rcx+0x18]
- test rcx, rcx
- je SHORT G_M41289_IG08
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M41289_IG09
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY
+ ; gcrRegs -[rax] ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M41289_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref lea rdx, [rsp+0x48]
mov r8, rsi
; gcrRegs +[r8]
@@ -86,15 +55,15 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcrRegs -[rsi r8] +[rax]
; gcr arg pop 0
nop - ;; size=15 bbWeight=1 PerfScore 4.00
-G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=69 bbWeight=1 PerfScore 11.00
+G_M41289_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 135, prolog size 11, PerfScore 32.21, instruction count 38, allocated bytes for code 135 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)+; Total bytes of code 98, prolog size 11, PerfScore 18.00, instruction count 26, allocated bytes for code 98 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -8,14 +8,15 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T01] ( 8, 7.50) double -> mm0 single-def+; V00 arg0 [V00,T01] ( 9, 8 ) double -> mm0 single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp4 [V05,T00] ( 2, 1 ) long -> rax "field V02._ticks (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) long -> zero-ref "field V03._ticks (fldOffset=0x0)" P-INDEP-; V07 cse0 [V07,T02] ( 3, 3 ) double -> mm1 "CSE - aggressive"+; V07 tmp6 [V07,T02] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 cse0 [V08,T03] ( 3, 3 ) double -> mm1 "CSE - aggressive" ;
; Lcl frame size = 40
@@ -44,8 +45,14 @@ G_M20148_IG04: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M20148_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si rax, xmm0- ;; size=5 bbWeight=0.50 PerfScore 3.00+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=51 bbWeight=0.50 PerfScore 10.25 G_M20148_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
ret
@@ -57,9 +64,12 @@ G_M20148_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=7 bbWeight=0 PerfScore 0.00
RWD00 dq 43E0000000000000h ; 9.22337204e+18
RWD08 dq C3E0000000000000h ; -9.22337204e+18+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 81, prolog size 7, PerfScore 24.62, instruction count 21, allocated bytes for code 81 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)+; Total bytes of code 127, prolog size 7, PerfScore 31.88, instruction count 27, allocated bytes for code 127 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts) ; ============================================================
Unwind Info:
@@ -12,6 +12,8 @@
; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"+; V04 tmp2 [V04,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 32
@@ -36,17 +38,27 @@ G_M53658_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
vxorps xmm1, xmm1, xmm1
vcvtsi2sd xmm1, xmm1, ebx
vmulsd xmm0, xmm0, xmm1+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si eax, xmm0- ;; size=44 bbWeight=1 PerfScore 32.92+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1
+ ;; size=89 bbWeight=1 PerfScore 47.42 G_M53658_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
RWD00 dq 3E00000000200000h ; 4.65661288e-10+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 8, PerfScore 37.17, instruction count 17, allocated bytes for code 60 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)+; Total bytes of code 105, prolog size 8, PerfScore 51.67, instruction count 23, allocated bytes for code 105 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts) ; ============================================================
Unwind Info:
@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x18], 0
- je SHORT G_M34046_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x18]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M34046_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
xor rdx, rdx
; gcrRegs +[rdx]
@@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
nop - ;; size=16 bbWeight=1 PerfScore 4.75
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=39 bbWeight=1 PerfScore 8.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 96 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 63, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 63 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -20,26 +20,11 @@ G_M34864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
;; size=22 bbWeight=1 PerfScore 4.75-G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M34864_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M34864_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M34864_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M34864_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
mov rdx, gword ptr [rbp+0x18]
; gcrRegs +[rdx]
@@ -48,14 +33,14 @@ G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx r8] +[rax]
nop - ;; size=18 bbWeight=1 PerfScore 5.50
-G_M34864_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=41 bbWeight=1 PerfScore 8.75
+G_M34864_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 102, prolog size 14, PerfScore 26.05, instruction count 27, allocated bytes for code 102 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 69, prolog size 14, PerfScore 15.25, instruction count 18, allocated bytes for code 69 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
1[int]:Start[System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8
2[System.ValueTuple4[System.__Canon,System.Memory
1[ubyte],long,System.__Canon],int]](byref):this (Instrumented Tier0)@@ -22,40 +22,25 @@ G_M49756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp+0x18], rdx
mov bword ptr [rbp+0x20], r8
;; size=26 bbWeight=1 PerfScore 5.75-G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x18]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M49756_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M49756_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x18]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M49756_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M49756_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x18]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M49756_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
mov rdx, bword ptr [rbp+0x20]
; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rdx]
nop - ;; size=15 bbWeight=1 PerfScore 5.25
-G_M49756_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=38 bbWeight=1 PerfScore 8.50
+G_M49756_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 103, prolog size 14, PerfScore 26.80, instruction count 27, allocated bytes for code 103 (MethodHash=8be73da3) for method System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:Start[System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref):this (Instrumented Tier0)+; Total bytes of code 70, prolog size 14, PerfScore 16.00, instruction count 18, allocated bytes for code 70 (MethodHash=8be73da3) for method System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:Start[System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref):this (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -9,88 +9,82 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T05] ( 3, 3 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T02] ( 5, 4.20) long -> rdx single-def
-; V02 arg1 [V02,T03] ( 4, 4 ) byref -> rbx single-def+; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T02] ( 5, 5 ) long -> rbx single-def
+; V02 arg1 [V02,T03] ( 4, 4 ) byref -> rsi single-def ; V03 loc0 [V03,T01] ( 7, 7 ) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T00] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T00] ( 4, 8 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 4 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T04] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 48+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi+ push rbp push rbx- sub rsp, 48
- mov qword ptr [rsp+0x28], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, r8
- ; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 4.75
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rdx
+ mov rdi, rcx
+ ; gcrRegs +[rdi]
+ mov rbx, rdx
+ mov rsi, r8
+ ; byrRegs +[rsi]
+ ;; size=22 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+ mov rax, gword ptr [rsi] ; gcrRegs +[rax]
test rax, rax- jne SHORT G_M58319_IG06
- mov rcx, qword ptr [rdx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M58319_IG04
- ;; size=21 bbWeight=1 PerfScore 8.50
-G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax]
- jmp SHORT G_M58319_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M58319_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdx+ jne SHORT G_M58319_IG03
+ mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY
+ ; gcrRegs -[rax] ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M58319_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0- mov rdi, rax
- ; gcrRegs +[rdi]
- lea rcx, bword ptr [rdi+0x10]
- ; byrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rsi]
- ; byrRegs -[rcx]
- mov rcx, rbx+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ lea rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx rdi]
+ ; byrRegs -[rcx]
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rcx, rsi
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx] xor r8, r8
; gcrRegs +[r8]
call <unknown method>
; gcrRegs -[rdx r8] +[rax]- ; byrRegs -[rcx rbx]+ ; byrRegs -[rcx rsi] ; gcr arg pop 0
test rax, rax- cmove rax, rdi
- ;; size=41 bbWeight=1 PerfScore 5.25
-G_M58319_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdi]
- add rsp, 48+ cmove rax, rbp
+ ;; size=88 bbWeight=1 PerfScore 11.75
+G_M58319_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbp]
+ add rsp, 40 pop rbx+ pop rbp pop rsi
pop rdi
ret - ;; size=8 bbWeight=1 PerfScore 2.75+ ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 111, prolog size 12, PerfScore 23.20, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 119, prolog size 13, PerfScore 21.00, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -98,12 +92,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -9,90 +9,84 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T04] ( 3, 2.87) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T02] ( 5, 4.04) long -> rdx single-def
-; V02 arg1 [V02,T03] ( 4, 3.87) byref -> rbx single-def
-; V03 loc0 [V03,T01] ( 7, 6.47) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V00 this [V00,T04] ( 3, 2.87) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T01] ( 5, 4.73) long -> rbx single-def
+; V02 arg1 [V02,T03] ( 4, 3.87) byref -> rsi single-def
+; V03 loc0 [V03,T02] ( 7, 6.47) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T00] ( 4, 6.93) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T00] ( 4, 6.93) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 3.47) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 4.85) long -> rcx "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 48+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi+ push rbp push rbx- sub rsp, 48
- mov qword ptr [rsp+0x28], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, r8
- ; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 4.75
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rdx
+ mov rdi, rcx
+ ; gcrRegs +[rdi]
+ mov rbx, rdx
+ mov rsi, r8
+ ; byrRegs +[rsi]
+ ;; size=22 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+ mov rax, gword ptr [rsi] ; gcrRegs +[rax]
test rax, rax- jne SHORT G_M58319_IG07+ jne SHORT G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 3.25-G_M58319_IG03: ; bbWeight=0.87, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=0.87, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref ; gcrRegs -[rax]- mov rcx, qword ptr [rdx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M58319_IG05
- ;; size=13 bbWeight=0.87 PerfScore 4.55
-G_M58319_IG04: ; bbWeight=0.69, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.69 PerfScore 1.39
-G_M58319_IG05: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdx+ mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.17 PerfScore 0.30
-G_M58319_IG06: ; bbWeight=0.87, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0- mov rdi, rax
- ; gcrRegs +[rdi]
- lea rcx, bword ptr [rdi+0x10]
- ; byrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rsi]
- ; byrRegs -[rcx]
- mov rcx, rbx+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ lea rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx rdi]
+ ; byrRegs -[rcx]
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rcx, rsi
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx] xor r8, r8
; gcrRegs +[r8]
call <unknown method>
; gcrRegs -[rdx r8] +[rax]- ; byrRegs -[rcx rbx]+ ; byrRegs -[rcx rsi] ; gcr arg pop 0
test rax, rax- cmove rax, rdi
- ;; size=41 bbWeight=0.87 PerfScore 4.55
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdi]
- add rsp, 48+ cmove rax, rbp
+ ;; size=80 bbWeight=0.87 PerfScore 7.37
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbp]
+ add rsp, 40 pop rbx+ pop rbp pop rsi
pop rdi
ret - ;; size=8 bbWeight=1 PerfScore 2.75+ ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 111, prolog size 12, PerfScore 21.54, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 119, prolog size 13, PerfScore 19.87, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -100,12 +94,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -9,90 +9,84 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.21) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.25) long -> rdx single-def
-; V02 arg1 [V02,T01] ( 4, 3.21) byref -> rbx single-def+; V00 this [V00,T02] ( 3, 2.21) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.41) long -> rbx single-def
+; V02 arg1 [V02,T01] ( 4, 3.21) byref -> rsi single-def ; V03 loc0 [V03,T03] ( 7, 3.83) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.66) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.66) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 0.83) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.16) long -> rcx "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 48+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi+ push rbp push rbx- sub rsp, 48
- mov qword ptr [rsp+0x28], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, r8
- ; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 4.75
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rdx
+ mov rdi, rcx
+ ; gcrRegs +[rdi]
+ mov rbx, rdx
+ mov rsi, r8
+ ; byrRegs +[rsi]
+ ;; size=22 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+ mov rax, gword ptr [rsi] ; gcrRegs +[rax]
test rax, rax- jne SHORT G_M58319_IG07+ jne SHORT G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 3.25-G_M58319_IG03: ; bbWeight=0.21, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=0.21, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref ; gcrRegs -[rax]- mov rcx, qword ptr [rdx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M58319_IG05
- ;; size=13 bbWeight=0.21 PerfScore 1.09
-G_M58319_IG04: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.17 PerfScore 0.33
-G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdx+ mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.04 PerfScore 0.07
-G_M58319_IG06: ; bbWeight=0.21, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0- mov rdi, rax
- ; gcrRegs +[rdi]
- lea rcx, bword ptr [rdi+0x10]
- ; byrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rsi]
- ; byrRegs -[rcx]
- mov rcx, rbx+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ lea rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx rdi]
+ ; byrRegs -[rcx]
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rcx, rsi
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx] xor r8, r8
; gcrRegs +[r8]
call <unknown method>
; gcrRegs -[rdx r8] +[rax]- ; byrRegs -[rcx rbx]+ ; byrRegs -[rcx rsi] ; gcr arg pop 0
test rax, rax- cmove rax, rdi
- ;; size=41 bbWeight=0.21 PerfScore 1.09
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdi]
- add rsp, 48+ cmove rax, rbp
+ ;; size=80 bbWeight=0.21 PerfScore 1.76
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbp]
+ add rsp, 40 pop rbx+ pop rbp pop rsi
pop rdi
ret - ;; size=8 bbWeight=1 PerfScore 2.75+ ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 111, prolog size 12, PerfScore 13.33, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 119, prolog size 13, PerfScore 14.26, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -100,12 +94,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x18], 0
- je SHORT G_M34046_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x18]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M34046_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
xor rdx, rdx
; gcrRegs +[rdx]
@@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
nop - ;; size=16 bbWeight=1 PerfScore 4.75
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=39 bbWeight=1 PerfScore 8.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 96 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 63, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 63 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -20,26 +20,11 @@ G_M34864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
;; size=22 bbWeight=1 PerfScore 4.75-G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M34864_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M34864_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M34864_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M34864_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
mov rdx, gword ptr [rbp+0x18]
; gcrRegs +[rdx]
@@ -48,14 +33,14 @@ G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx r8] +[rax]
nop - ;; size=18 bbWeight=1 PerfScore 5.50
-G_M34864_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=41 bbWeight=1 PerfScore 8.75
+G_M34864_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 102, prolog size 14, PerfScore 26.05, instruction count 27, allocated bytes for code 102 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 69, prolog size 14, PerfScore 15.25, instruction count 18, allocated bytes for code 69 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -21,26 +21,11 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
;; size=22 bbWeight=1 PerfScore 4.75-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M56297_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x18], rax
- jmp SHORT G_M56297_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x18], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea r8, [rbp-0x10]
mov rcx, qword ptr [rbp-0x18]
mov rdx, gword ptr [rbp+0x18]
@@ -48,14 +33,14 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
nop - ;; size=19 bbWeight=1 PerfScore 5.75
-G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=42 bbWeight=1 PerfScore 9.00
+G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 103, prolog size 14, PerfScore 26.30, instruction count 27, allocated bytes for code 103 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)+; Total bytes of code 70, prolog size 14, PerfScore 15.50, instruction count 18, allocated bytes for code 70 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -8,90 +8,84 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 2.50) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> rdx single-def
-; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rbx single-def+; V00 this [V00,T03] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> rbx single-def
+; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rsi single-def ; V03 loc0 [V03,T02] ( 7, 5 ) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V09 rat0 [V09,T06] ( 3, 2 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 48+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi+ push rbp push rbx- sub rsp, 48
- mov qword ptr [rsp+0x28], rdx
- mov rsi, rcx
- ; gcrRegs +[rsi]
- mov rbx, r8
- ; byrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 4.75
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 40
+ mov qword ptr [rsp+0x20], rdx
+ mov rdi, rcx
+ ; gcrRegs +[rdi]
+ mov rbx, rdx
+ mov rsi, r8
+ ; byrRegs +[rsi]
+ ;; size=22 bbWeight=1 PerfScore 6.00
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+ mov rax, gword ptr [rsi] ; gcrRegs +[rax]
test rax, rax- jne SHORT G_M58319_IG07+ jne SHORT G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 3.25-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref ; gcrRegs -[rax]- mov rcx, qword ptr [rdx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M58319_IG05
- ;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdx+ mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.10 PerfScore 0.18
-G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0- mov rdi, rax
- ; gcrRegs +[rdi]
- lea rcx, bword ptr [rdi+0x10]
- ; byrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rsi]
- ; byrRegs -[rcx]
- mov rcx, rbx+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ lea rcx, bword ptr [rbp+0x10] ; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx rdi]
+ ; byrRegs -[rcx]
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rcx, rsi
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx] xor r8, r8
; gcrRegs +[r8]
call <unknown method>
; gcrRegs -[rdx r8] +[rax]- ; byrRegs -[rcx rbx]+ ; byrRegs -[rcx rsi] ; gcr arg pop 0
test rax, rax- cmove rax, rdi
- ;; size=41 bbWeight=0.50 PerfScore 2.62
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rdi]
- add rsp, 48+ cmove rax, rbp
+ ;; size=80 bbWeight=0.50 PerfScore 4.25
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rbp]
+ add rsp, 40 pop rbx+ pop rbp pop rsi
pop rdi
ret - ;; size=8 bbWeight=1 PerfScore 2.75+ ;; size=9 bbWeight=1 PerfScore 3.25 -; Total bytes of code 111, prolog size 12, PerfScore 16.98, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 119, prolog size 13, PerfScore 16.75, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -99,12 +93,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -15,12 +15,13 @@
G_M2686_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
sub rsp, 48+ vzeroupper lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x08], rax
mov gword ptr [rbp+0x10], rcx
mov bword ptr [rbp+0x18], rdx- ;; size=24 bbWeight=1 PerfScore 5.00+ ;; size=27 bbWeight=1 PerfScore 6.00 G_M2686_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
@@ -28,24 +29,27 @@ G_M2686_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rcx] +[rax]
mov gword ptr [rbp-0x08], rax- mov r8, gword ptr [rbp-0x08]
- ; gcrRegs +[r8]+ mov rdx, gword ptr [rbp-0x08]
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Nullable`1[System.DateTimeOffset]
+ call CORINFO_HELP_UNBOX
+ ; gcrRegs -[rax rdx]
+ ; byrRegs +[rax] mov rcx, bword ptr [rbp+0x18]
; byrRegs +[rcx]- mov rdx, 0xD1FFAB1E ; System.Nullable`1[System.DateTimeOffset]
- call CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[rax r8]
- ; byrRegs -[rcx]+ vmovdqu xmm0, xmmword ptr [rax]
+ vmovdqu xmmword ptr [rcx], xmm0
+ mov rdx, qword ptr [rax+0x10]
+ mov qword ptr [rcx+0x10], rdx mov rax, bword ptr [rbp+0x18]- ; byrRegs +[rax]
- ;; size=46 bbWeight=1 PerfScore 9.50+ ;; size=62 bbWeight=1 PerfScore 18.50 G_M2686_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 76, prolog size 16, PerfScore 16.25, instruction count 19, allocated bytes for code 76 (MethodHash=ebbbf581) for method Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)+; Total bytes of code 95, prolog size 19, PerfScore 26.25, instruction count 24, allocated bytes for code 95 (MethodHash=ebbbf581) for method Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1) ; ============================================================
Unwind Info:
@@ -7,25 +7,20 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T05] ( 7, 4.88) long -> rsi single-def
-; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T04] ( 5, 12 ) long -> rsi single-def
+; V01 arg0 [V01,T05] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]>-; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def+; V03 arg2 [V03,T06] ( 4, 4 ) byref -> r14 single-def ; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-0x38] class-hnd EH-live single-def <<unknown class>>-; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon>
-; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>+; V05 loc1 [V05,T03] ( 3, 17 ) ref -> r15 class-hnd <System.__Canon>
+; V06 loc2 [V06,T08] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon> ;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"+; V10 tmp2 [V10,T07] ( 3, 6 ) long -> rax "VirtualCall with runtime lookup" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup"
-; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T04] ( 2, 8.50) long -> r15 hoist "CSE - aggressive"
-; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
-; V16 rat1 [V16,T12] ( 3, 2 ) long -> r15 "runtime lookup"
-; V17 rat2 [V17,T10] ( 3, 2.80) long -> rcx "spilling expr"
-; V18 rat3 [V18,T11] ( 3, 2.24) long -> r15 "fgMakeTemp is creating a new local variable"+; V12 tmp4 [V12,T00] ( 3, 48 ) long -> rax "VirtualCall with runtime lookup"
+; V13 PSPSym [V13,T09] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ;
; Lcl frame size = 72
@@ -50,41 +45,29 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, r9
; byrRegs +[r14]
;; size=43 bbWeight=1 PerfScore 11.00-G_M62024_IG02: ; bbWeight=1, gcVars=0000000000002000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
- ; GC ptr vars +{V06 V13}+G_M62024_IG02: ; bbWeight=1, gcVars=0000000000000100 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref
+ ; GC ptr vars +{V06} test rdi, rdi- je G_M62024_IG21+ je G_M62024_IG14 test rbx, rbx- je G_M62024_IG22
- mov rcx, qword ptr [rsi+0x38]
- mov r11, qword ptr [rcx+0x10]
- test r11, r11
- je SHORT G_M62024_IG04
- ;; size=31 bbWeight=1 PerfScore 7.75
-G_M62024_IG03: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
- jmp SHORT G_M62024_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M62024_IG04: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref+ je G_M62024_IG15 mov rcx, rsi
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov r11, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M62024_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref mov rcx, rdi
; gcrRegs +[rcx]- call [r11]+ mov r11, rax
+ call [rax] ; gcrRegs -[rcx rdi] +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
mov gword ptr [rbp-0x38], rdi
; GC ptr vars +{V04}- ;; size=13 bbWeight=1 PerfScore 4.50
-G_M62024_IG06: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz+ ;; size=51 bbWeight=1 PerfScore 8.75
+G_M62024_IG03: ; bbWeight=1, gcVars=0000000000000104 {V04 V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz ; gcrRegs -[rax]- ; GC ptr vars -{V13} mov rcx, rdi
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; function address
@@ -92,38 +75,22 @@ G_M62024_IG06: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax- je SHORT G_M62024_IG14+ je SHORT G_M62024_IG07 ;; size=20 bbWeight=1 PerfScore 4.75-G_M62024_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
- mov rcx, qword ptr [rsi+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M62024_IG10
- ;; size=11 bbWeight=0.50 PerfScore 3.00
-G_M62024_IG08: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
- mov r15, qword ptr [rcx+0x18]
- test r15, r15
- je SHORT G_M62024_IG10
- ;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M62024_IG09: ; bbWeight=0.32, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
- jmp SHORT G_M62024_IG11
- ;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M62024_IG10: ; bbWeight=0.18, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref+G_M62024_IG04: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz mov rcx, rsi
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov r15, rax
- ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M62024_IG11: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
- mov r11, r15 mov rcx, rdi
; gcrRegs +[rcx]- call [r11]+ mov r11, rax
+ call [rax] ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rdx, rsi+ mov r15, rax
+ ; gcrRegs +[r15]
+ mov rdx, r15 ; gcrRegs +[rdx]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -131,28 +98,28 @@ G_M62024_IG11: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r1
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
test eax, eax- jne SHORT G_M62024_IG13+ jne SHORT G_M62024_IG06 mov rcx, rdi
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>- ; gcrRegs -[rcx rsi]+ ; gcrRegs -[rcx r15] ; gcr arg pop 0
test eax, eax- jne SHORT G_M62024_IG11
- ;; size=46 bbWeight=8 PerfScore 120.00
-G_M62024_IG12: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref, isz+ jne SHORT G_M62024_IG04
+ ;; size=63 bbWeight=8 PerfScore 132.00
+G_M62024_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref, isz ; gcrRegs -[rbx]- jmp SHORT G_M62024_IG14+ jmp SHORT G_M62024_IG07 ;; size=2 bbWeight=1 PerfScore 2.00-G_M62024_IG13: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4000 {r14}, byref, isz
- ; gcrRegs +[rsi]+G_M62024_IG06: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ ; gcrRegs +[r15] mov byte ptr [r14], 1- mov gword ptr [rbp-0x40], rsi
- jmp SHORT G_M62024_IG15+ mov gword ptr [rbp-0x40], r15
+ jmp SHORT G_M62024_IG08 ;; size=10 bbWeight=1 PerfScore 4.00-G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
- ; gcrRegs -[rsi]+G_M62024_IG07: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+ ; gcrRegs -[r15] ; GC ptr vars -{V06}
mov rcx, rdi
; gcrRegs +[rcx]
@@ -161,25 +128,25 @@ G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=008
call [r11]<unknown method>
; gcrRegs -[rcx rdi]
; gcr arg pop 0- jmp SHORT G_M62024_IG19+ jmp SHORT G_M62024_IG12 ;; size=18 bbWeight=1 PerfScore 5.50-G_M62024_IG15: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref+G_M62024_IG08: ; bbWeight=1, gcVars=0000000000000104 {V04 V06}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rdi]
; byrRegs -[r14]- ; GC ptr vars +{V02 V04 V06 V13}+ ; GC ptr vars +{V02 V04 V06} mov rcx, rsp- call G_M62024_IG23+ call G_M62024_IG16 ; gcrRegs -[rdi]
;; size=8 bbWeight=1 PerfScore 1.25-G_M62024_IG16: ; bbWeight=1, nogc, extend+G_M62024_IG09: ; bbWeight=1, nogc, extend nop
;; size=1 bbWeight=1 PerfScore 0.25-G_M62024_IG17: ; bbWeight=1, gcVars=0000000000002000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V02 V04 V13}+G_M62024_IG10: ; bbWeight=1, gcVars=0000000000000100 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V02 V04} mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
;; size=4 bbWeight=1 PerfScore 1.00-G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend+G_M62024_IG11: ; bbWeight=1, epilog, nogc, extend add rsp, 72
pop rbx
pop rsi
@@ -189,7 +156,7 @@ G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 4.25-G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref+G_M62024_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref ; gcrRegs -[rax]
; byrRegs +[r14]
; GC ptr vars -{V06}
@@ -197,7 +164,7 @@ G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
xor rax, rax
; gcrRegs +[rax]
;; size=6 bbWeight=1 PerfScore 1.25-G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend+G_M62024_IG13: ; bbWeight=1, epilog, nogc, extend add rsp, 72
pop rbx
pop rsi
@@ -207,7 +174,7 @@ G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 4.25-G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M62024_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax]
; byrRegs -[r14]
mov ecx, 17
@@ -215,14 +182,14 @@ G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00-G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, 12
call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00-G_M62024_IG23: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V04 V06 V13}+G_M62024_IG16: ; bbWeight=1, gcVars=0000000000000104 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V04 V06} push rbp
...
@@ -37,13 +37,13 @@ G_M2004_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov ebx, eax
mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int]- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
@@ -52,7 +52,7 @@ G_M2004_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
mov gword ptr [rdi+0x08], rcx
mov rcx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[rcx]- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
@@ -66,7 +66,7 @@ G_M2004_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
mov rcx, 0xD1FFAB1E ; code for <unknown method>
mov qword ptr [r14+0x18], rcx
mov rcx, 0xD1FFAB1E ; <unknown class>- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
@@ -47,7 +47,7 @@ G_M36700_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Xunit.Sdk.CollectionTracker- call CORINFO_HELP_ISINSTANCEOFCLASS+ call CORINFO_HELP_ISINSTANCEOFARRAY ; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
@@ -65,7 +65,7 @@ G_M36700_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>- call [CORINFO_HELP_ISINSTANCEOFANY]+ call [CORINFO_HELP_ISINSTANCEOFCLASS] ; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
mov rsi, rax
@@ -77,7 +77,7 @@ G_M36700_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
G_M36700_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rsi]
mov rcx, 0xD1FFAB1E ; <unknown class>- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rsi, rax
@@ -97,7 +97,7 @@ G_M36700_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=45 bbWeight=0.50 PerfScore 3.12
G_M36700_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Xunit.Sdk.CollectionTracker`1[System.Object]- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
@@ -132,7 +132,7 @@ G_M36700_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rax rdi]
mov ecx, 0x1136
mov rdx, 0xD1FFAB1E- call CORINFO_HELP_STRCNS+ call CORINFO_HELP_NEWARR_1_ALIGN8 ; gcrRegs +[rax]
; gcr arg pop 0
mov rcx, rax
@@ -368,7 +368,7 @@ G_M35644_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=35 bbWeight=1.00 PerfScore 10.88
G_M35644_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Text.StringBuilder- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rsi, rax
@@ -376,7 +376,7 @@ G_M35644_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov dword ptr [rsi+0x20], 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; ushort[]
mov edx, 16- call CORINFO_HELP_NEWARR_1_VC+ call CORINFO_HELP_NEWARR_1_OBJ ; gcr arg pop 0
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
@@ -59,7 +59,7 @@ G_M23136_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M23136_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Action`1[System.Runtime.Loader.AssemblyLoadContext]- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rsi, rax
@@ -59,7 +59,7 @@ G_M23136_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M23136_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; System.Action`1[System.Runtime.Loader.AssemblyLoadContext]- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
; gcr arg pop 0
mov rsi, rax
@@ -7,18 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 7, 3 ) long -> rcx single-def+; V00 TypeCtx [V00,T01] ( 5, 3 ) long -> rcx single-def ; V01 arg0 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]>
; V02 loc0 [V02,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 rat0 [V07,T03] ( 3, 0 ) long -> rdx "runtime lookup"
-; V08 rat1 [V08,T04] ( 3, 0 ) long -> rdx "spilling expr"
-; V09 rat2 [V09,T05] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V10 rat3 [V10,T06] ( 3, 0 ) long -> rdx "runtime lookup"
-; V11 rat4 [V11,T07] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -29,7 +24,7 @@ G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
cmp byte ptr [rdx+0x10], 0- je SHORT G_M34926_IG07+ je SHORT G_M34926_IG05 mov rax, gword ptr [rdx+0x08]
; gcrRegs +[rax]
cmp gword ptr [rax+0x10], 0
@@ -41,51 +36,29 @@ G_M34926_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25-G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rdx]- mov rdx, qword ptr [rcx+0x38]
- cmp qword ptr [rdx+0x08], 24
- jle SHORT G_M34926_IG05
- mov rdx, qword ptr [rdx+0x18]
- test rdx, rdx
- je SHORT G_M34926_IG05
- jmp SHORT G_M34926_IG06
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M34926_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx+ mov rcx, rax call [Microsoft.FSharp.Collections.SetTreeModule:alreadyFinished[System.__Canon]():System.__Canon]
; gcrRegs +[rax]
; gcr arg pop 0- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M34926_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M34926_IG08
- jmp SHORT G_M34926_IG09
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M34926_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M34926_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx+ mov rcx, rax call [Microsoft.FSharp.Collections.SetTreeModule:notStarted[System.__Canon]():System.__Canon]
; gcrRegs +[rax]
; gcr arg pop 0
int3 - ;; size=10 bbWeight=0 PerfScore 0.00+ ;; size=25 bbWeight=0 PerfScore 0.00 -; Total bytes of code 131, prolog size 9, PerfScore 16.50, instruction count 34, allocated bytes for code 131 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)+; Total bytes of code 88, prolog size 9, PerfScore 16.50, instruction count 20, allocated bytes for code 88 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -19,31 +17,19 @@ G_M25175_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25-G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M25175_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M25175_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M25175_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M25175_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M25175_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M25175_IG06: ; bbWeight=1, epilog, nogc, extend+ mov rcx, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M25175_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40
tail.jmp [Microsoft.FSharp.Core.LanguagePrimitives:GenericOneDynamic[System.__Canon]():System.__Canon]
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -19,31 +17,19 @@ G_M5834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25-G_M5834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M5834_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M5834_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M5834_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M5834_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M5834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M5834_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M5834_IG06: ; bbWeight=1, epilog, nogc, extend+ mov rcx, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M5834_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40
tail.jmp [System.Activator:CreateInstance[System.__Canon]():System.__Canon]
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=8fe2e935) for method Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=8fe2e935) for method Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts) ; ============================================================
Unwind Info:
1[int]]:Invoke(System.Collections.Generic.KeyValuePair
2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox1[System.Nullable
1[int]],System.Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)@@ -17,11 +17,13 @@
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V08 tmp6 [V08,T05] ( 4, 3 ) ref -> rcx single-def "V01.[000..008)"-;* V09 cse0 [V09,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V10 cse1 [V10,T06] ( 4, 3 ) int -> rdx "CSE - aggressive"
-;* V11 rat0 [V11,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V12 rat1 [V12,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"+; V09 tmp7 [V09,T08] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V10 tmp8 [V10,T09] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+;* V11 cse0 [V11,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 4, 3 ) int -> rdx "CSE - aggressive"
+;* V13 rat0 [V13,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V14 rat1 [V14,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V15 rat2 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 48
@@ -49,14 +51,20 @@ G_M41213_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si eax, xmm0
; gcrRegs -[rax]+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, edx
jle SHORT G_M41213_IG04
call [System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this]
; gcrRegs -[rcx]
; gcr arg pop 0- ;; size=35 bbWeight=0.50 PerfScore 13.29+ ;; size=80 bbWeight=0.50 PerfScore 20.54 G_M41213_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rax, rax
; gcrRegs +[rax]
@@ -67,9 +75,13 @@ G_M41213_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 72, prolog size 13, PerfScore 27.04, instruction count 22, allocated bytes for code 72 (MethodHash=cfd55f02) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)+; Total bytes of code 117, prolog size 13, PerfScore 34.29, instruction count 28, allocated bytes for code 117 (MethodHash=cfd55f02) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts) ; ============================================================
Unwind Info:
1[int]]:Invoke(System.Collections.Generic.KeyValuePair
2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox1[System.Nullable
1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)@@ -15,7 +15,9 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V06 tmp4 [V06,T01] ( 4, 3 ) ref -> rcx single-def "V01.[000..008)"-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rdx "CSE - aggressive"+; V07 tmp5 [V07,T03] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 tmp6 [V08,T04] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+; V09 cse0 [V09,T02] ( 4, 3 ) int -> rdx "CSE - aggressive" ;
; Lcl frame size = 40
@@ -38,14 +40,20 @@ G_M21751_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si eax, xmm0
; gcrRegs -[rax]+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, edx
jle SHORT G_M21751_IG04
call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this]
; gcrRegs -[rcx]
; gcr arg pop 0- ;; size=35 bbWeight=0.50 PerfScore 13.29+ ;; size=80 bbWeight=0.50 PerfScore 20.54 G_M21751_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor rax, rax
; gcrRegs +[rax]
@@ -55,9 +63,13 @@ G_M21751_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 7, PerfScore 21.29, instruction count 17, allocated bytes for code 60 (MethodHash=1fe8ab08) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)+; Total bytes of code 105, prolog size 7, PerfScore 28.54, instruction count 23, allocated bytes for code 105 (MethodHash=1fe8ab08) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts) ; ============================================================
Unwind Info:
1[int]]:Invoke(System.Collections.Generic.KeyValuePair
2[System.Nullable1[int],System.Collections.Generic.List
1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)@@ -15,7 +15,9 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V06 tmp4 [V06,T01] ( 4, 3 ) ref -> rcx single-def "V01.[000..008)"-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rdx "CSE - aggressive"+; V07 tmp5 [V07,T03] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 tmp6 [V08,T04] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+; V09 cse0 [V09,T02] ( 4, 3 ) int -> rdx "CSE - aggressive" ;
; Lcl frame size = 40
@@ -38,14 +40,20 @@ G_M53962_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si eax, xmm0
; gcrRegs -[rax]+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, edx
jle SHORT G_M53962_IG04
call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this]
; gcrRegs -[rcx]
; gcr arg pop 0- ;; size=35 bbWeight=0.50 PerfScore 13.29+ ;; size=80 bbWeight=0.50 PerfScore 20.54 G_M53962_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor rax, rax
; gcrRegs +[rax]
@@ -55,9 +63,13 @@ G_M53962_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 7, PerfScore 21.29, instruction count 17, allocated bytes for code 60 (MethodHash=926d2d35) for method Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)+; Total bytes of code 105, prolog size 7, PerfScore 28.54, instruction count 23, allocated bytes for code 105 (MethodHash=926d2d35) for method Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts) ; ============================================================
Unwind Info:
@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M41558_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M41558_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
call [<unknown method>]
; gcrRegs +[rax]
nop - ;; size=11 bbWeight=1 PerfScore 4.25
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=34 bbWeight=1 PerfScore 7.50
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 91, prolog size 14, PerfScore 23.80, instruction count 24, allocated bytes for code 91 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 58, prolog size 14, PerfScore 13.00, instruction count 15, allocated bytes for code 58 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rcx
mov qword ptr [rbp+0x10], rcx
;; size=18 bbWeight=1 PerfScore 3.75-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M41558_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M41558_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
call [<unknown method>]
; gcrRegs +[rax]
nop - ;; size=11 bbWeight=1 PerfScore 4.25
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=34 bbWeight=1 PerfScore 7.50
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 91, prolog size 14, PerfScore 23.80, instruction count 24, allocated bytes for code 91 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)+; Total bytes of code 58, prolog size 14, PerfScore 13.00, instruction count 15, allocated bytes for code 58 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0) ; ============================================================
Unwind Info:
@@ -20,26 +20,11 @@ G_M39284_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
;; size=22 bbWeight=1 PerfScore 4.75-G_M39284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M39284_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M39284_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp+0x10]
- mov rax, qword ptr [rax+0x38]
- mov rax, qword ptr [rax+0x10]
- mov qword ptr [rbp-0x10], rax
- jmp SHORT G_M39284_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M39284_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M39284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp+0x10]
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x10], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M39284_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, qword ptr [rbp-0x10]
mov rdx, gword ptr [rbp+0x18]
; gcrRegs +[rdx]
@@ -48,14 +33,14 @@ G_M39284_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx r8] +[rax]
nop - ;; size=18 bbWeight=1 PerfScore 5.50
-G_M39284_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=41 bbWeight=1 PerfScore 8.75
+G_M39284_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 102, prolog size 14, PerfScore 26.05, instruction count 27, allocated bytes for code 102 (MethodHash=42cc668b) for method Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier0)+; Total bytes of code 69, prolog size 14, PerfScore 15.25, instruction count 18, allocated bytes for code 69 (MethodHash=42cc668b) for method Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -69,23 +69,26 @@ G_M22456_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=16 bbWeight=1 PerfScore 5.25
G_M22456_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]- lea rcx, [rbp-0x08]
- mov r8, gword ptr [rbp-0x30]
- ; gcrRegs +[r8]
- mov rdx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
- call CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[r8]+ mov rdx, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
+ call CORINFO_HELP_UNBOX
+ ; gcrRegs -[rdx]
+ ; byrRegs +[rax]
+ mov ax, word ptr [rax]
+ ; byrRegs -[rax]
+ mov word ptr [rbp-0x08], ax lea rcx, [rbp-0x08]
call [<unknown method>]
nop - ;; size=34 bbWeight=1 PerfScore 6.50+ ;; size=37 bbWeight=1 PerfScore 9.00 G_M22456_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 180, prolog size 24, PerfScore 46.83, instruction count 43, allocated bytes for code 180 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)+; Total bytes of code 183, prolog size 24, PerfScore 49.33, instruction count 44, allocated bytes for code 183 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -19,31 +17,19 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M41558_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M41558_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend+ mov rcx, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40
tail.jmp [System.Array:Empty[System.__Canon]():System.__Canon[]]
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray
1+Builder[System.ValueTuple`3[int,int,System.__Canon]@@ -7,18 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def ; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> rdx "argument with side effect"
-; V07 rat0 [V07,T04] ( 3, 4 ) long -> rcx "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
-; V09 rat2 [V09,T05] ( 3, 4 ) long -> rdx "runtime lookup"
-; V10 rat3 [V10,T02] ( 3, 5.60) long -> rcx "spilling expr"
-; V11 rat4 [V11,T03] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> rdx "argument with side effect" ;
; Lcl frame size = 48
@@ -30,61 +25,35 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x28], rcx
mov rbx, rcx
;; size=20 bbWeight=1 PerfScore 3.75-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M7461_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M7461_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz call [System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]]
; gcrRegs +[rax]
; gcr arg pop 0
mov gword ptr [rsp+0x20], rax- mov rcx, qword ptr [rbx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M7461_IG08
- ;; size=22 bbWeight=1 PerfScore 10.00
-G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rdx, qword ptr [rcx+0x18]
- test rdx, rdx
- je SHORT G_M7461_IG08
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M7461_IG09
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY
+ ; gcrRegs -[rax] ; gcr arg pop 0
mov rdx, rax- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea rcx, [rsp+0x20]
call [System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this]
; gcrRegs +[rax]
; gcr arg pop 0
nop - ;; size=12 bbWeight=1 PerfScore 3.75
-G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=65 bbWeight=1 PerfScore 11.25
+G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 128, prolog size 17, PerfScore 30.96, instruction count 34, allocated bytes for code 128 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)+; Total bytes of code 91, prolog size 17, PerfScore 16.75, instruction count 22, allocated bytes for code 91 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts) ; ============================================================
Unwind Info:
@@ -7,13 +7,11 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V04 tmp2 [V04,T04] ( 2, 4 ) long -> rcx "argument with side effect"
-; V05 rat0 [V05,T03] ( 3, 4 ) long -> rcx "runtime lookup"
-; V06 rat1 [V06,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V04 tmp2 [V04,T02] ( 2, 4 ) long -> rcx "argument with side effect" ;
; Lcl frame size = 48
@@ -24,34 +22,22 @@ G_M39678_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdx
; gcrRegs +[rbx]
;; size=13 bbWeight=1 PerfScore 2.50-G_M39678_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rax, qword ptr [rdx+0x10]
- test rax, rax
- je SHORT G_M39678_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M39678_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, rax
- jmp SHORT G_M39678_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M39678_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref+G_M39678_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rcx, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M39678_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdx, rbx
; gcrRegs +[rdx]- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M39678_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=21 bbWeight=1 PerfScore 1.75
+G_M39678_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx
tail.jmp [System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]]
; gcr arg pop 0
;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 63, prolog size 13, PerfScore 12.85, instruction count 17, allocated bytes for code 63 (MethodHash=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)+; Total bytes of code 45, prolog size 13, PerfScore 7.00, instruction count 11, allocated bytes for code 45 (MethodHash=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -9,61 +9,57 @@
; Final local variable assignments
;
; V00 RetBuf [V00,T01] ( 5, 5 ) byref -> rsi single-def-; V01 TypeCtx [V01,T02] ( 5, 4.20) long -> rdx single-def+; V01 TypeCtx [V01,T02] ( 5, 5 ) long -> rdi single-def ; V02 arg0 [V02,T00] ( 4, 8 ) byref -> rbx single-def-; V03 arg1 [V03,T05] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String>+; V03 arg1 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd single-def <System.String> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 tmp2 [V06,T03] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"+; V06 tmp2 [V06,T03] ( 3, 6 ) long -> r14 "VirtualCall with runtime lookup" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref "field V02.Node (fldOffset=0x0)" P-INDEP
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "field V02.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP-; V13 tmp9 [V13,T06] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP
-; V14 tmp10 [V14,T07] ( 2, 2 ) ubyte -> rbx "field V07.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP+; V13 tmp9 [V13,T05] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T06] ( 2, 2 ) ubyte -> rbx "field V07.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>-; V16 rat0 [V16,T04] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 48
G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+ push r14 push rdi
push rsi+ push rbp push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rdx
mov rsi, rcx
; byrRegs +[rsi]+ mov rdi, rdx mov rbx, r8
; byrRegs +[rbx]- mov rdi, r9
- ; gcrRegs +[rdi]
- ;; size=21 bbWeight=1 PerfScore 5.00
-G_M18340_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov rcx, qword ptr [rdx+0x38]
- mov r11, qword ptr [rcx+0x10]
- test r11, r11
- je SHORT G_M18340_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz
- jmp SHORT G_M18340_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref
- mov rcx, rdx+ mov rbp, r9
+ ; gcrRegs +[rbp]
+ ;; size=27 bbWeight=1 PerfScore 7.25
+G_M18340_IG02: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref
+ mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov r14, rax
+ mov rcx, rdi
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov r11, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M18340_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref mov rcx, gword ptr [rbx]
; gcrRegs +[rcx]- mov rdx, rdi+ mov r11, r14
+ mov rdx, rbp ; gcrRegs +[rdx]- call [r11]
- ; gcrRegs -[rcx rdx rdi] +[rax]+ call [r14]
+ ; gcrRegs -[rcx rdx rbp] +[rax] ; gcr arg pop 0
movzx rbx, byte ptr [rbx+0x08]
; byrRegs -[rbx]
@@ -77,16 +73,18 @@ G_M18340_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rs
mov byte ptr [rsi+0x08], bl
mov rax, rsi
; byrRegs +[rax]- ;; size=30 bbWeight=1 PerfScore 10.00
-G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=72 bbWeight=1 PerfScore 13.50
+G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx+ pop rbp pop rsi
pop rdi+ pop r14 ret - ;; size=8 bbWeight=1 PerfScore 2.75+ ;; size=11 bbWeight=1 PerfScore 3.75 -; Total bytes of code 95, prolog size 12, PerfScore 24.95, instruction count 31, allocated bytes for code 95 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)+; Total bytes of code 110, prolog size 15, PerfScore 24.50, instruction count 35, allocated bytes for code 110 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -94,12 +92,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray
1[System.__Canon]:this (FullOpts)@@ -8,59 +8,55 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 3 ) byref -> rbx this single-def
-; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> rdx single-def+; V00 this [V00,T01] ( 3, 3 ) byref -> rsi this single-def
+; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> rbx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdi "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> rax single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V08 tmp6 [V08,T04] ( 2, 4 ) long -> rcx "argument with side effect"
-; V09 rat0 [V09,T03] ( 3, 4 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> rax single-def "field V04.array (fldOffset=0x0)" P-INDEP ;
; Lcl frame size = 48
G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+ push rdi
+ push rsi push rbx
sub rsp, 48
mov qword ptr [rsp+0x28], rdx- mov rbx, rcx
- ; byrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 2.50
-G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, qword ptr [rdx+0x38]
- mov rcx, qword ptr [rcx+0x10]
- test rcx, rcx
- je SHORT G_M44373_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M44373_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov rcx, rdx+ mov rsi, rcx
+ ; byrRegs +[rsi]
+ mov rbx, rdx
+ ;; size=18 bbWeight=1 PerfScore 4.75
+G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rcx, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov rdx, gword ptr [rbx]+ mov rdi, rax
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rdx, gword ptr [rsi] ; gcrRegs +[rdx]- call CORINFO_HELP_ISINSTANCEOFARRAY+ mov rcx, rdi
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[rdx] +[rax]- ; byrRegs -[rbx]+ ; byrRegs -[rsi] ; gcr arg pop 0
nop - ;; size=9 bbWeight=1 PerfScore 3.25
-G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=51 bbWeight=1 PerfScore 6.75
+G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx+ pop rsi
+ pop rdi ret - ;; size=6 bbWeight=1 PerfScore 1.75+ ;; size=8 bbWeight=1 PerfScore 2.75 -; Total bytes of code 64, prolog size 10, PerfScore 14.70, instruction count 19, allocated bytes for code 64 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)+; Total bytes of code 77, prolog size 12, PerfScore 14.25, instruction count 23, allocated bytes for code 77 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -68,10 +64,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -14,8 +14,8 @@
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.DateTime>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>-; V06 tmp2 [V06,T10] ( 4, 1.50) double -> mm0 "Inline return value spill temp"
-; V07 tmp3 [V07,T09] ( 4, 3 ) double -> mm0 single-def "Inline stloc first use temp"+; V06 tmp2 [V06,T12] ( 4, 1.50) double -> mm0 "Inline return value spill temp"
+; V07 tmp3 [V07,T11] ( 4, 3 ) double -> mm0 single-def "Inline stloc first use temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
@@ -29,8 +29,10 @@
; V18 tmp14 [V18,T04] ( 2, 8 ) long -> rcx "field V09._dateData (fldOffset=0x0)" P-INDEP
; V19 tmp15 [V19,T05] ( 2, 8 ) long -> rax "field V11._ticks (fldOffset=0x0)" P-INDEP
; V20 tmp16 [V20,T06] ( 2, 8 ) long -> rcx "field V13._ticks (fldOffset=0x0)" P-INDEP-; V21 cse0 [V21,T03] ( 2, 9 ) long -> rbp hoist "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 3, 6 ) long -> rdi hoist "CSE - aggressive"+; V21 tmp17 [V21,T09] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V22 tmp18 [V22,T10] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+; V23 cse0 [V23,T03] ( 2, 9 ) long -> rbp hoist "CSE - aggressive"
+; V24 cse1 [V24,T07] ( 3, 6 ) long -> rdi hoist "CSE - aggressive" ;
; Lcl frame size = 32
@@ -62,10 +64,16 @@ G_M23588_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
vdivsd xmm0, xmm0, qword ptr [reloc @RWD24]
vmovups xmm1, xmmword ptr [reloc @RWD32]
vmaxsd xmm0, xmm1, xmm0- vcvttsd2si esi, xmm0+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD48], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD64], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD80]
+ vcvttsd2si ecx, xmm0
+ vpbroadcastd xmm0, ecx
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd esi, xmm1 mov rdi, qword ptr [rbx]
mov rbp, qword ptr [rdi+0x50]- ;; size=31 bbWeight=1 PerfScore 30.00+ ;; size=76 bbWeight=1 PerfScore 44.50 G_M23588_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -125,9 +133,12 @@ RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14
RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14
RWD24 dq 4024000000000000h ; 10
RWD32 dq 408F400000000000h, 0000000000000000h+RWD48 dq 0000000000000088h, 0000000000000000h
+RWD64 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD80 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 219, prolog size 13, PerfScore 181.58, instruction count 56, allocated bytes for code 219 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)+; Total bytes of code 264, prolog size 13, PerfScore 196.08, instruction count 62, allocated bytes for code 264 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts) ; ============================================================
Unwind Info:
@@ -7,18 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T01] ( 7, 3 ) long -> rcx single-def+; V00 TypeCtx [V00,T01] ( 5, 3 ) long -> rcx single-def ; V01 arg0 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]>
; V02 loc0 [V02,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V07 rat0 [V07,T03] ( 3, 0 ) long -> rdx "runtime lookup"
-; V08 rat1 [V08,T04] ( 3, 0 ) long -> rdx "spilling expr"
-; V09 rat2 [V09,T05] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
-; V10 rat3 [V10,T06] ( 3, 0 ) long -> rdx "runtime lookup"
-; V11 rat4 [V11,T07] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -29,7 +24,7 @@ G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
cmp byte ptr [rdx+0x10], 0- je SHORT G_M34926_IG07+ je SHORT G_M34926_IG05 mov rax, gword ptr [rdx+0x08]
; gcrRegs +[rax]
cmp gword ptr [rax+0x10], 0
@@ -41,51 +36,29 @@ G_M34926_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25-G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rdx]- mov rdx, qword ptr [rcx+0x38]
- cmp qword ptr [rdx+0x08], 24
- jle SHORT G_M34926_IG05
- mov rdx, qword ptr [rdx+0x18]
- test rdx, rdx
- je SHORT G_M34926_IG05
- jmp SHORT G_M34926_IG06
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M34926_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx+ mov rcx, rax call [Microsoft.FSharp.Collections.SetTreeModule:alreadyFinished[System.__Canon]():System.__Canon]
; gcrRegs +[rax]
; gcr arg pop 0- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M34926_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M34926_IG08
- jmp SHORT G_M34926_IG09
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M34926_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M34926_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx+ mov rcx, rax call [Microsoft.FSharp.Collections.SetTreeModule:notStarted[System.__Canon]():System.__Canon]
; gcrRegs +[rax]
; gcr arg pop 0
int3 - ;; size=10 bbWeight=0 PerfScore 0.00+ ;; size=25 bbWeight=0 PerfScore 0.00 -; Total bytes of code 131, prolog size 9, PerfScore 16.50, instruction count 34, allocated bytes for code 131 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)+; Total bytes of code 88, prolog size 9, PerfScore 16.50, instruction count 20, allocated bytes for code 88 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts) ; ============================================================
Unwind Info:
2[System.__Canon,int]]():System.Collections.Generic.IEnumerable
1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -19,31 +17,19 @@ G_M43414_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25-G_M43414_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M43414_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M43414_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43414_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M43414_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M43414_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M43414_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M43414_IG06: ; bbWeight=1, epilog, nogc, extend+ mov rcx, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M43414_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40
tail.jmp [System.Array:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.KeyValuePair`2[System.__Canon,int][]]
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=4ae05669) for method System.Linq.Enumerable:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=4ae05669) for method System.Linq.Enumerable:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts) ; ============================================================
Unwind Info:
@@ -7,11 +7,9 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -19,31 +17,19 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
mov qword ptr [rsp+0x20], rcx
;; size=9 bbWeight=1 PerfScore 1.25-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx+0x10]
- test rdx, rdx
- je SHORT G_M15963_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M15963_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, rdx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend+ mov rcx, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40
tail.jmp [Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]]
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox
1[System.Canon],System.Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)@@ -19,12 +19,14 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref "field V01.value (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "field V01.key (fldOffset=0x8)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]>-;* V11 cse0 [V11,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V12 cse1 [V12,T05] ( 4, 3 ) int -> rdx "CSE - aggressive"
-; V13 cse2 [V13,T07] ( 3, 2.50) ref -> rcx "CSE - aggressive"
-;* V14 rat0 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V15 rat1 [V15,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V16 rat2 [V16,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"+; V11 tmp9 [V11,T09] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V12 tmp10 [V12,T10] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
+;* V13 cse0 [V13,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V14 cse1 [V14,T05] ( 4, 3 ) int -> rdx "CSE - aggressive"
+; V15 cse2 [V15,T07] ( 3, 2.50) ref -> rcx "CSE - aggressive"
+;* V16 rat0 [V16,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V17 rat1 [V17,T04] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V18 rat2 [V18,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 48
@@ -52,14 +54,20 @@ G_M51837_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08]
vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si eax, xmm0
; gcrRegs -[rax]+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, edx
jle SHORT G_M51837_IG04
call [System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this]
; gcrRegs -[rcx]
; gcr arg pop 0- ;; size=35 bbWeight=0.50 PerfScore 13.29+ ;; size=80 bbWeight=0.50 PerfScore 20.54 G_M51837_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rax, rax
; gcrRegs +[rax]
@@ -70,9 +78,13 @@ G_M51837_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 72, prolog size 13, PerfScore 27.04, instruction count 22, allocated bytes for code 72 (MethodHash=91e33582) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)+; Total bytes of code 117, prolog size 13, PerfScore 34.29, instruction count 28, allocated bytes for code 117 (MethodHash=91e33582) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts) ; ============================================================
Unwind Info:
@@ -12,6 +12,8 @@
; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"+; V04 tmp2 [V04,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 32
@@ -36,17 +38,27 @@ G_M53658_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
vxorps xmm1, xmm1, xmm1
vcvtsi2sd xmm1, xmm1, ebx
vmulsd xmm0, xmm0, xmm1+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD48] vcvttsd2si eax, xmm0- ;; size=44 bbWeight=1 PerfScore 32.92+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1
+ ;; size=89 bbWeight=1 PerfScore 47.42 G_M53658_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
RWD00 dq 3E00000000200000h ; 4.65661288e-10+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 8, PerfScore 37.17, instruction count 17, allocated bytes for code 60 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)+; Total bytes of code 105, prolog size 8, PerfScore 51.67, instruction count 23, allocated bytes for code 105 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts) ; ============================================================
Unwind Info:
@@ -14,6 +14,8 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub rdx, rcx
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rdx+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttsd2si rax, xmm0- ;; size=17 bbWeight=1 PerfScore 12.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=63 bbWeight=1 PerfScore 27.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)+
+; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts) ; ============================================================
Unwind Info:
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 1,591 | 95 | 29 | 1,467 | -5,490 | +1,976 |
benchmarks.run.windows.x64.checked.mch | 1,263 | 104 | 19 | 1,140 | -4,654 | +1,075 |
benchmarks.run_pgo.windows.x64.checked.mch | 2,396 | 228 | 30 | 2,138 | -15,543 | +1,452 |
benchmarks.run_tiered.windows.x64.checked.mch | 2,607 | 216 | 21 | 2,370 | -16,240 | +1,566 |
coreclr_tests.run.windows.x64.checked.mch | 108 | 1 | 1 | 106 | -42 | +73 |
libraries.crossgen2.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.windows.x64.checked.mch | 4,725 | 573 | 30 | 4,122 | -18,212 | +708 |
libraries_tests.run.windows.x64.Release.mch | 1,908 | 216 | 34 | 1,658 | -17,971 | +128 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 1,924 | 140 | 25 | 1,759 | -6,710 | +555 |
realworld.run.windows.x64.checked.mch | 6,258 | 385 | 22 | 5,851 | -17,527 | +1,167 |
smoke_tests.nativeaot.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
22,780 | 1,958 | 211 | 20,611 | -102,389 | +8,700 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 8,001 | 5,329 | 2,672 | 0 (0.00%) | 4,064 (32.61%) |
benchmarks.run.windows.x64.checked.mch | 4,124 | 1 | 4,123 | 3 (0.04%) | 3,342 (42.51%) |
benchmarks.run_pgo.windows.x64.checked.mch | 14,221 | 11,701 | 2,520 | 9 (0.04%) | 5,917 (28.82%) |
benchmarks.run_tiered.windows.x64.checked.mch | 13,430 | 11,795 | 1,635 | 0 (0.00%) | 4,456 (24.37%) |
coreclr_tests.run.windows.x64.checked.mch | 462 | 3 | 459 | 2 (0.03%) | 5,582 (86.68%) |
libraries.crossgen2.windows.x64.checked.mch | 563 | 0 | 563 | 1 (0.06%) | 594 (38.25%) |
libraries.pmi.windows.x64.checked.mch | 11,782 | 0 | 11,782 | 0 (0.00%) | 4,477 (26.88%) |
libraries_tests.run.windows.x64.Release.mch | 7,789 | 6,644 | 1,145 | 0 (0.00%) | 4,462 (35.28%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 5,886 | 0 | 5,886 | 1 (0.01%) | 4,605 (42.30%) |
realworld.run.windows.x64.checked.mch | 10,717 | 0 | 10,717 | 2 (0.01%) | 4,412 (28.42%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 2,908 | 2 | 2,906 | 29 (0.37%) | 4,541 (57.87%) |
79,883 | 35,475 | 44,408 | 47 (0.04%) | 46,452 (35.54%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 933140 (overridden on cmd)
Total bytes of diff: 929626 (overridden on cmd)
Total bytes of delta: -3514 (-0.38 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
138 : 5915.dasm (87.34 % of base)
92 : 1153.dasm (68.66 % of base)
92 : 8371.dasm (65.25 % of base)
92 : 1419.dasm (68.66 % of base)
80 : 14288.dasm (121.21 % of base)
80 : 4657.dasm (103.90 % of base)
80 : 5132.dasm (57.55 % of base)
80 : 7890.dasm (103.90 % of base)
75 : 13444.dasm (60.00 % of base)
74 : 3873.dasm (47.13 % of base)
72 : 5145.dasm (53.33 % of base)
72 : 5929.dasm (72.00 % of base)
72 : 8378.dasm (72.00 % of base)
72 : 8412.dasm (53.33 % of base)
72 : 8611.dasm (80.90 % of base)
72 : 8619.dasm (78.26 % of base)
60 : 11107.dasm (32.09 % of base)
60 : 11127.dasm (30.46 % of base)
60 : 1425.dasm (32.09 % of base)
60 : 1448.dasm (30.46 % of base)
Top file improvements (bytes):
-376 : 4350.dasm (-44.39 % of base)
-323 : 4269.dasm (-35.03 % of base)
-308 : 4262.dasm (-36.54 % of base)
-198 : 4347.dasm (-33.67 % of base)
-165 : 2653.dasm (-30.16 % of base)
-132 : 10605.dasm (-14.44 % of base)
-132 : 136.dasm (-14.44 % of base)
-132 : 5782.dasm (-26.19 % of base)
-132 : 2988.dasm (-25.05 % of base)
-103 : 4878.dasm (-24.52 % of base)
-99 : 4018.dasm (-25.98 % of base)
-99 : 4131.dasm (-27.20 % of base)
-99 : 4264.dasm (-32.04 % of base)
-99 : 4638.dasm (-29.91 % of base)
-99 : 5002.dasm (-34.62 % of base)
-99 : 8672.dasm (-27.58 % of base)
-99 : 2980.dasm (-33.67 % of base)
-70 : 3030.dasm (-26.92 % of base)
-66 : 134.dasm (-33.85 % of base)
-66 : 2987.dasm (-34.38 % of base)
54 total files with Code Size differences (30 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
138 (87.34 % of base) : 5915.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
92 (68.66 % of base) : 1153.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Instrumented Tier1)
92 (68.66 % of base) : 1419.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Tier1)
92 (65.25 % of base) : 8371.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier1)
80 (121.21 % of base) : 14288.dasm - Pipelines.Sockets.Unofficial.Arenas.RetentionPolicy+<>c__DisplayClass10_0:<Decay>b__0(long,long):long:this (Tier0)
80 (103.90 % of base) : 7890.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 4657.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
80 (57.55 % of base) : 5132.dasm - System.TimeProvider:GetElapsedTime(long,long):System.TimeSpan:this (Tier0)
75 (60.00 % of base) : 13444.dasm - StackExchange.Redis.ConfigurationOptions:get_ConfigCheckSeconds():int:this (Tier0)
74 (47.13 % of base) : 3873.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (80.90 % of base) : 8611.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
72 (53.33 % of base) : 8412.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Instrumented Tier0)
72 (53.33 % of base) : 5145.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Tier0)
72 (78.26 % of base) : 8619.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
72 (72.00 % of base) : 8378.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Instrumented Tier0)
72 (72.00 % of base) : 5929.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Tier0)
60 (30.46 % of base) : 1448.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Instrumented Tier1)
60 (30.46 % of base) : 11127.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Tier1)
60 (32.09 % of base) : 1425.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Instrumented Tier1)
60 (32.09 % of base) : 11107.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Tier1)
Top method improvements (bytes):
-376 (-44.39 % of base) : 4350.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-323 (-35.03 % of base) : 4269.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-308 (-36.54 % of base) : 4262.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-198 (-33.67 % of base) : 4347.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-165 (-30.16 % of base) : 2653.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-132 (-26.19 % of base) : 5782.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-132 (-25.05 % of base) : 2988.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-132 (-14.44 % of base) : 10605.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-132 (-14.44 % of base) : 136.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-103 (-24.52 % of base) : 4878.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier0)
-99 (-25.98 % of base) : 4018.dasm - Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon]:Configure[System.__Canon](System.Action`2[System.__Canon,System.__Canon]):Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon]:this (Tier0)
-99 (-29.91 % of base) : 4638.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
-99 (-27.20 % of base) : 4131.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier0)
-99 (-33.67 % of base) : 2980.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-99 (-34.62 % of base) : 5002.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-99 (-32.04 % of base) : 4264.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-99 (-27.58 % of base) : 8672.dasm - System.Threading.Tasks.Task:WhenAny[System.__Canon](System.__Canon,System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (Tier0)
-70 (-26.92 % of base) : 3030.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier0)
-66 (-34.38 % of base) : 2987.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-66 (-33.85 % of base) : 452.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Instrumented Tier0)
Top method regressions (percentages):
46 (219.05 % of base) : 934.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (219.05 % of base) : 1145.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
80 (121.21 % of base) : 14288.dasm - Pipelines.Sockets.Unofficial.Arenas.RetentionPolicy+<>c__DisplayClass10_0:<Decay>b__0(long,long):long:this (Tier0)
80 (103.90 % of base) : 7890.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 4657.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
138 (87.34 % of base) : 5915.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
72 (80.90 % of base) : 8611.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
72 (78.26 % of base) : 8619.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
72 (72.00 % of base) : 8378.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Instrumented Tier0)
72 (72.00 % of base) : 5929.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Tier0)
92 (68.66 % of base) : 1153.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Instrumented Tier1)
92 (68.66 % of base) : 1419.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Tier1)
92 (65.25 % of base) : 8371.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier1)
75 (60.00 % of base) : 13444.dasm - StackExchange.Redis.ConfigurationOptions:get_ConfigCheckSeconds():int:this (Tier0)
80 (57.55 % of base) : 5132.dasm - System.TimeProvider:GetElapsedTime(long,long):System.TimeSpan:this (Tier0)
46 (56.79 % of base) : 12248.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1)
72 (53.33 % of base) : 8412.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Instrumented Tier0)
72 (53.33 % of base) : 5145.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Tier0)
74 (47.13 % of base) : 3873.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
46 (39.66 % of base) : 11125.dasm - System.TimeProvider:GetElapsedTime(long,long):System.TimeSpan:this (Tier1)
Top method improvements (percentages):
-376 (-44.39 % of base) : 4350.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-308 (-36.54 % of base) : 4262.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-33 (-36.26 % of base) : 2893.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-323 (-35.03 % of base) : 4269.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-99 (-34.62 % of base) : 5002.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-33 (-34.38 % of base) : 3995.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
-66 (-34.38 % of base) : 2987.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-66 (-33.85 % of base) : 452.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Instrumented Tier0)
-66 (-33.85 % of base) : 134.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Tier0)
-66 (-33.85 % of base) : 10604.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Tier0)
-198 (-33.67 % of base) : 4347.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-99 (-33.67 % of base) : 2980.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-33 (-33.33 % of base) : 4050.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Transient[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
-66 (-33.33 % of base) : 5008.dasm - System.SpanHelpers:Reverse[System.__Canon](byref,ulong) (Tier0)
-33 (-32.35 % of base) : 2884.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier0)
-33 (-32.04 % of base) : 4268.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
-99 (-32.04 % of base) : 4264.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-33 (-32.04 % of base) : 126.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start[Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl+<StartAsync>d__28`1[System.__Canon]](byref):this (Tier0)
-33 (-32.04 % of base) : 10595.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start[Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl+<StartAsync>d__28`1[System.__Canon]](byref):this (Tier0)
-165 (-30.16 % of base) : 2653.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 638956 (overridden on cmd)
Total bytes of diff: 635377 (overridden on cmd)
Total bytes of delta: -3579 (-0.56 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
177 : 3063.dasm (17.12 % of base)
143 : 4922.dasm (88.82 % of base)
133 : 6792.dasm (81.60 % of base)
91 : 929.dasm (74.59 % of base)
82 : 4823.dasm (41.84 % of base)
54 : 5532.dasm (38.30 % of base)
50 : 5509.dasm (38.46 % of base)
49 : 2690.dasm (5.63 % of base)
49 : 6664.dasm (6.06 % of base)
46 : 5357.dasm (56.79 % of base)
46 : 2581.dasm (219.05 % of base)
45 : 686.dasm (75.00 % of base)
45 : 5683.dasm (4.46 % of base)
32 : 3985.dasm (53.33 % of base)
17 : 4879.dasm (5.99 % of base)
6 : 1156.dasm (3.82 % of base)
5 : 1923.dasm (4.42 % of base)
3 : 3915.dasm (1.38 % of base)
2 : 2019.dasm (3.17 % of base)
Top file improvements (bytes):
-270 : 4933.dasm (-23.22 % of base)
-219 : 6725.dasm (-18.34 % of base)
-208 : 5167.dasm (-17.84 % of base)
-177 : 233.dasm (-33.27 % of base)
-171 : 329.dasm (-34.20 % of base)
-152 : 237.dasm (-25.12 % of base)
-151 : 555.dasm (-25.00 % of base)
-126 : 1052.dasm (-28.25 % of base)
-111 : 494.dasm (-20.71 % of base)
-104 : 4306.dasm (-17.30 % of base)
-102 : 1071.dasm (-29.06 % of base)
-92 : 3606.dasm (-26.29 % of base)
-83 : 202.dasm (-22.80 % of base)
-83 : 1259.dasm (-25.08 % of base)
-70 : 1255.dasm (-21.34 % of base)
-63 : 1051.dasm (-29.30 % of base)
-63 : 1857.dasm (-28.51 % of base)
-59 : 1702.dasm (-25.43 % of base)
-59 : 8185.dasm (-23.98 % of base)
-59 : 7133.dasm (-22.52 % of base)
49 total files with Code Size differences (30 improved, 19 regressed), 21 unchanged.
Top method regressions (bytes):
177 (17.12 % of base) : 3063.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
143 (88.82 % of base) : 4922.dasm - System.Random+Net5CompatSeedImpl:NextUInt64():ulong:this (FullOpts)
133 (81.60 % of base) : 6792.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
91 (74.59 % of base) : 929.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
82 (41.84 % of base) : 4823.dasm - System.Numerics.Tests.Perf_VectorOf`1[ushort]:SquareRootBenchmark():System.Numerics.Vector`1[ushort]:this (FullOpts)
54 (38.30 % of base) : 5532.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
50 (38.46 % of base) : 5509.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
49 (6.06 % of base) : 6664.dasm - System.Single:CosPi(float):float (FullOpts)
49 (5.63 % of base) : 2690.dasm - System.Single:TanPi(float):float (FullOpts)
46 (219.05 % of base) : 2581.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
46 (56.79 % of base) : 5357.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
45 (4.46 % of base) : 5683.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
45 (75.00 % of base) : 686.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
32 (53.33 % of base) : 3985.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
17 (5.99 % of base) : 4879.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
6 (3.82 % of base) : 1156.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
5 (4.42 % of base) : 1923.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
3 (1.38 % of base) : 3915.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
2 (3.17 % of base) : 2019.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
Top method improvements (bytes):
-270 (-23.22 % of base) : 4933.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-219 (-18.34 % of base) : 6725.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (FullOpts)
-208 (-17.84 % of base) : 5167.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
-177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-171 (-34.20 % of base) : 329.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-152 (-25.12 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-25.00 % of base) : 555.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-126 (-28.25 % of base) : 1052.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-111 (-20.71 % of base) : 494.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-104 (-17.30 % of base) : 4306.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-102 (-29.06 % of base) : 1071.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-92 (-26.29 % of base) : 3606.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-83 (-25.08 % of base) : 1259.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-83 (-22.80 % of base) : 202.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
-70 (-21.34 % of base) : 1255.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
-63 (-29.30 % of base) : 1051.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-63 (-28.51 % of base) : 1857.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-59 (-23.98 % of base) : 8185.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetAttribute[System.__Canon](System.Object):System.__Canon (FullOpts)
-59 (-22.52 % of base) : 7133.dasm - System.Linq.Enumerable:SelectMany[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-59 (-25.43 % of base) : 1702.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
46 (219.05 % of base) : 2581.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
143 (88.82 % of base) : 4922.dasm - System.Random+Net5CompatSeedImpl:NextUInt64():ulong:this (FullOpts)
133 (81.60 % of base) : 6792.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
45 (75.00 % of base) : 686.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
91 (74.59 % of base) : 929.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
46 (56.79 % of base) : 5357.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
32 (53.33 % of base) : 3985.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
82 (41.84 % of base) : 4823.dasm - System.Numerics.Tests.Perf_VectorOf`1[ushort]:SquareRootBenchmark():System.Numerics.Vector`1[ushort]:this (FullOpts)
50 (38.46 % of base) : 5509.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
54 (38.30 % of base) : 5532.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
177 (17.12 % of base) : 3063.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
49 (6.06 % of base) : 6664.dasm - System.Single:CosPi(float):float (FullOpts)
17 (5.99 % of base) : 4879.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
49 (5.63 % of base) : 2690.dasm - System.Single:TanPi(float):float (FullOpts)
45 (4.46 % of base) : 5683.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
5 (4.42 % of base) : 1923.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
6 (3.82 % of base) : 1156.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
2 (3.17 % of base) : 2019.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
3 (1.38 % of base) : 3915.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
-171 (-34.20 % of base) : 329.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-39 (-31.45 % of base) : 6964.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-63 (-29.30 % of base) : 1051.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-102 (-29.06 % of base) : 1071.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-63 (-28.51 % of base) : 1857.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-126 (-28.25 % of base) : 1052.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-37 (-28.24 % of base) : 1764.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-37 (-27.41 % of base) : 1525.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-37 (-27.21 % of base) : 3913.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-37 (-26.62 % of base) : 5539.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.__Canon],System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]](byref,byref,byref) (FullOpts)
-92 (-26.29 % of base) : 3606.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-18 (-25.71 % of base) : 8197.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-59 (-25.43 % of base) : 1702.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
-18 (-25.35 % of base) : 1258.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],byref):ubyte (FullOpts)
-152 (-25.12 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-83 (-25.08 % of base) : 1259.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-37 (-25.00 % of base) : 7281.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-151 (-25.00 % of base) : 555.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-37 (-24.83 % of base) : 1274.dasm - System.Collections.Frozen.FrozenDictionary:ToFrozenDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1821224 (overridden on cmd)
Total bytes of diff: 1807133 (overridden on cmd)
Total bytes of delta: -14091 (-0.77 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
143 : 2333.dasm (97.28 % of base)
138 : 12079.dasm (87.34 % of base)
106 : 14921.dasm (6.77 % of base)
101 : 15547.dasm (13.00 % of base)
97 : 18592.dasm (202.08 % of base)
89 : 5970.dasm (8.91 % of base)
80 : 7598.dasm (103.90 % of base)
80 : 6371.dasm (103.90 % of base)
74 : 8425.dasm (8.51 % of base)
74 : 1671.dasm (54.01 % of base)
72 : 15212.dasm (78.26 % of base)
72 : 15263.dasm (56.25 % of base)
71 : 1800.dasm (112.70 % of base)
71 : 19679.dasm (34.80 % of base)
65 : 11514.dasm (9.77 % of base)
8 : 10332.dasm (7.21 % of base)
8 : 14288.dasm (7.21 % of base)
8 : 16264.dasm (7.21 % of base)
8 : 16720.dasm (7.21 % of base)
8 : 18476.dasm (7.21 % of base)
Top file improvements (bytes):
-582 : 16830.dasm (-29.26 % of base)
-457 : 1592.dasm (-49.25 % of base)
-425 : 793.dasm (-46.65 % of base)
-404 : 799.dasm (-40.28 % of base)
-400 : 3761.dasm (-38.24 % of base)
-389 : 1502.dasm (-42.42 % of base)
-333 : 16340.dasm (-39.93 % of base)
-313 : 3972.dasm (-41.57 % of base)
-288 : 20220.dasm (-41.38 % of base)
-281 : 16829.dasm (-32.41 % of base)
-276 : 1336.dasm (-32.13 % of base)
-258 : 13152.dasm (-39.94 % of base)
-240 : 3872.dasm (-42.93 % of base)
-210 : 270.dasm (-34.37 % of base)
-204 : 4313.dasm (-12.23 % of base)
-195 : 3876.dasm (-36.31 % of base)
-189 : 13328.dasm (-33.99 % of base)
-186 : 15278.dasm (-20.04 % of base)
-181 : 617.dasm (-31.42 % of base)
-162 : 1575.dasm (-34.03 % of base)
54 total files with Code Size differences (33 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
143 (97.28 % of base) : 2333.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 12079.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
106 (6.77 % of base) : 14921.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
101 (13.00 % of base) : 15547.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
97 (202.08 % of base) : 18592.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
89 (8.91 % of base) : 5970.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
80 (103.90 % of base) : 7598.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 6371.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
74 (8.51 % of base) : 8425.dasm - System.Single:TanPi(float):float (Tier0)
74 (54.01 % of base) : 1671.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (56.25 % of base) : 15263.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
72 (78.26 % of base) : 15212.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
71 (34.80 % of base) : 19679.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
71 (112.70 % of base) : 1800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
65 (9.77 % of base) : 11514.dasm - System.Single:CosPi(float):float (Tier0)
8 (7.21 % of base) : 10332.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 14288.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 16264.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 16720.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 18476.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-582 (-29.26 % of base) : 16830.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
-457 (-49.25 % of base) : 1592.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 793.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-404 (-40.28 % of base) : 799.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-400 (-38.24 % of base) : 3761.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-389 (-42.42 % of base) : 1502.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-333 (-39.93 % of base) : 16340.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-313 (-41.57 % of base) : 3972.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-41.38 % of base) : 20220.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-281 (-32.41 % of base) : 16829.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
-276 (-32.13 % of base) : 1336.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 13152.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-240 (-42.93 % of base) : 3872.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-210 (-34.37 % of base) : 270.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-204 (-12.23 % of base) : 4313.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
-195 (-36.31 % of base) : 3876.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-189 (-33.99 % of base) : 13328.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-186 (-20.04 % of base) : 15278.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-181 (-31.42 % of base) : 617.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
-162 (-34.03 % of base) : 1575.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
Top method regressions (percentages):
97 (202.08 % of base) : 18592.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
71 (112.70 % of base) : 1800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
80 (103.90 % of base) : 7598.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 6371.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
143 (97.28 % of base) : 2333.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 12079.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
72 (78.26 % of base) : 15212.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
72 (56.25 % of base) : 15263.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
74 (54.01 % of base) : 1671.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
71 (34.80 % of base) : 19679.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
101 (13.00 % of base) : 15547.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
65 (9.77 % of base) : 11514.dasm - System.Single:CosPi(float):float (Tier0)
89 (8.91 % of base) : 5970.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
74 (8.51 % of base) : 8425.dasm - System.Single:TanPi(float):float (Tier0)
8 (7.21 % of base) : 10332.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 14288.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 16264.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 16720.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 18476.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 12068.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-457 (-49.25 % of base) : 1592.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 793.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-240 (-42.93 % of base) : 3872.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-389 (-42.42 % of base) : 1502.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-81 (-41.75 % of base) : 19096.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-313 (-41.57 % of base) : 3972.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-41.38 % of base) : 20220.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-133 (-40.92 % of base) : 3971.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-40.82 % of base) : 8306.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.31 % of base) : 19634.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`3[System.__Canon,int,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-40.31 % of base) : 789.dasm - System.Linq.Enumerable:SkipWhile[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-404 (-40.28 % of base) : 799.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-81 (-40.10 % of base) : 18352.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-81 (-40.10 % of base) : 17301.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-258 (-39.94 % of base) : 13152.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-333 (-39.93 % of base) : 16340.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-81 (-39.90 % of base) : 9588.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-129 (-39.81 % of base) : 1577.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-400 (-38.24 % of base) : 3761.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-129 (-38.05 % of base) : 4110.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1565006 (overridden on cmd)
Total bytes of diff: 1550332 (overridden on cmd)
Total bytes of delta: -14674 (-0.94 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
143 : 2305.dasm (97.28 % of base)
138 : 4888.dasm (87.34 % of base)
106 : 10546.dasm (6.77 % of base)
101 : 11285.dasm (13.00 % of base)
97 : 13889.dasm (202.08 % of base)
91 : 12712.dasm (74.59 % of base)
89 : 13092.dasm (8.91 % of base)
80 : 7677.dasm (103.90 % of base)
74 : 1633.dasm (54.01 % of base)
74 : 13732.dasm (8.51 % of base)
72 : 10887.dasm (56.25 % of base)
72 : 17739.dasm (80.90 % of base)
72 : 10829.dasm (78.26 % of base)
71 : 1773.dasm (112.70 % of base)
71 : 15815.dasm (83.53 % of base)
71 : 8712.dasm (34.80 % of base)
65 : 8995.dasm (9.77 % of base)
46 : 9894.dasm (219.05 % of base)
19 : 17691.dasm (25.00 % of base)
8 : 2095.dasm (7.21 % of base)
Top file improvements (bytes):
-582 : 16332.dasm (-29.26 % of base)
-457 : 1553.dasm (-49.25 % of base)
-425 : 728.dasm (-46.65 % of base)
-404 : 734.dasm (-40.28 % of base)
-400 : 13640.dasm (-38.24 % of base)
-389 : 1462.dasm (-42.42 % of base)
-333 : 3353.dasm (-39.93 % of base)
-313 : 6440.dasm (-41.57 % of base)
-288 : 12546.dasm (-41.38 % of base)
-281 : 16331.dasm (-32.41 % of base)
-276 : 1299.dasm (-32.13 % of base)
-258 : 6220.dasm (-39.94 % of base)
-253 : 17819.dasm (-38.86 % of base)
-240 : 13704.dasm (-42.93 % of base)
-210 : 272.dasm (-34.37 % of base)
-204 : 15313.dasm (-12.23 % of base)
-195 : 13708.dasm (-36.31 % of base)
-195 : 16033.dasm (-35.78 % of base)
-189 : 6406.dasm (-33.99 % of base)
-186 : 10906.dasm (-20.04 % of base)
54 total files with Code Size differences (34 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
143 (97.28 % of base) : 2305.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 4888.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
106 (6.77 % of base) : 10546.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
101 (13.00 % of base) : 11285.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
97 (202.08 % of base) : 13889.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
91 (74.59 % of base) : 12712.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
89 (8.91 % of base) : 13092.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
80 (103.90 % of base) : 7677.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
74 (8.51 % of base) : 13732.dasm - System.Single:TanPi(float):float (Tier0)
74 (54.01 % of base) : 1633.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (56.25 % of base) : 10887.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
72 (80.90 % of base) : 17739.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
72 (78.26 % of base) : 10829.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
71 (34.80 % of base) : 8712.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
71 (83.53 % of base) : 15815.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
71 (112.70 % of base) : 1773.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
65 (9.77 % of base) : 8995.dasm - System.Single:CosPi(float):float (Tier0)
46 (219.05 % of base) : 9894.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
19 (25.00 % of base) : 17691.dasm - Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)
8 (7.21 % of base) : 2095.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-582 (-29.26 % of base) : 16332.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
-457 (-49.25 % of base) : 1553.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 728.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-404 (-40.28 % of base) : 734.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-400 (-38.24 % of base) : 13640.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-389 (-42.42 % of base) : 1462.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-333 (-39.93 % of base) : 3353.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-313 (-41.57 % of base) : 6440.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-41.38 % of base) : 12546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-281 (-32.41 % of base) : 16331.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
-276 (-32.13 % of base) : 1299.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 6220.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-253 (-38.86 % of base) : 17819.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-240 (-42.93 % of base) : 13704.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-210 (-34.37 % of base) : 272.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-204 (-12.23 % of base) : 15313.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
-195 (-35.78 % of base) : 16033.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-195 (-36.31 % of base) : 13708.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-189 (-33.99 % of base) : 6406.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-186 (-20.04 % of base) : 10906.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
Top method regressions (percentages):
46 (219.05 % of base) : 9894.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
97 (202.08 % of base) : 13889.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
71 (112.70 % of base) : 1773.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
80 (103.90 % of base) : 7677.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
143 (97.28 % of base) : 2305.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 4888.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
71 (83.53 % of base) : 15815.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
72 (80.90 % of base) : 17739.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
72 (78.26 % of base) : 10829.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
91 (74.59 % of base) : 12712.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
72 (56.25 % of base) : 10887.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
74 (54.01 % of base) : 1633.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
71 (34.80 % of base) : 8712.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
19 (25.00 % of base) : 17691.dasm - Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)
101 (13.00 % of base) : 11285.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
65 (9.77 % of base) : 8995.dasm - System.Single:CosPi(float):float (Tier0)
89 (8.91 % of base) : 13092.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
74 (8.51 % of base) : 13732.dasm - System.Single:TanPi(float):float (Tier0)
8 (7.21 % of base) : 2095.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
106 (6.77 % of base) : 10546.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
Top method improvements (percentages):
-457 (-49.25 % of base) : 1553.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 728.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-240 (-42.93 % of base) : 13704.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
-389 (-42.42 % of base) : 1462.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-81 (-41.75 % of base) : 8097.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-313 (-41.57 % of base) : 6440.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-41.38 % of base) : 12546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
-81 (-41.12 % of base) : 15656.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-129 (-40.95 % of base) : 8389.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-133 (-40.92 % of base) : 6439.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-40.31 % of base) : 8667.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`3[System.__Canon,int,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-40.31 % of base) : 724.dasm - System.Linq.Enumerable:SkipWhile[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-404 (-40.28 % of base) : 734.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-81 (-40.10 % of base) : 9987.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-81 (-40.10 % of base) : 6857.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-258 (-39.94 % of base) : 6220.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-333 (-39.93 % of base) : 3353.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-81 (-39.90 % of base) : 4930.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-129 (-39.81 % of base) : 1538.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-81 (-39.13 % of base) : 17377.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 105015 (overridden on cmd)
Total bytes of diff: 105046 (overridden on cmd)
Total bytes of delta: 31 (0.03 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
73 : 19438.dasm (39.67 % of base)
Top file improvements (bytes):
-42 : 502.dasm (-10.99 % of base)
2 total files with Code Size differences (1 improved, 1 regressed), 56 unchanged.
Top method regressions (bytes):
73 (39.67 % of base) : 19438.dasm - FPBehaviorApp.Managed:ConvertDoubleToUInt32(double,int):uint (FullOpts)
Top method improvements (bytes):
-42 (-10.99 % of base) : 502.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
Top method regressions (percentages):
73 (39.67 % of base) : 19438.dasm - FPBehaviorApp.Managed:ConvertDoubleToUInt32(double,int):uint (FullOpts)
Top method improvements (percentages):
-42 (-10.99 % of base) : 502.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 693716 (overridden on cmd)
Total bytes of diff: 676212 (overridden on cmd)
Total bytes of delta: -17504 (-2.52 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
132 : 12354.dasm (29.73 % of base)
130 : 9641.dasm (17.29 % of base)
69 : 8910.dasm (24.47 % of base)
45 : 10960.dasm (75.00 % of base)
45 : 10981.dasm (75.00 % of base)
45 : 10978.dasm (62.50 % of base)
45 : 10957.dasm (62.50 % of base)
31 : 8506.dasm (12.60 % of base)
25 : 12066.dasm (22.52 % of base)
17 : 13009.dasm (15.60 % of base)
16 : 12122.dasm (8.47 % of base)
14 : 10081.dasm (18.18 % of base)
11 : 10508.dasm (4.68 % of base)
10 : 8595.dasm (5.26 % of base)
10 : 12405.dasm (4.63 % of base)
10 : 15327.dasm (7.63 % of base)
8 : 1984.dasm (7.69 % of base)
6 : 5142.dasm (2.58 % of base)
6 : 5146.dasm (1.40 % of base)
6 : 15285.dasm (4.29 % of base)
Top file improvements (bytes):
-148 : 12462.dasm (-22.49 % of base)
-122 : 2256.dasm (-25.05 % of base)
-122 : 6202.dasm (-25.05 % of base)
-118 : 12507.dasm (-23.55 % of base)
-115 : 2260.dasm (-27.45 % of base)
-111 : 12465.dasm (-23.03 % of base)
-110 : 2254.dasm (-31.61 % of base)
-110 : 2258.dasm (-31.61 % of base)
-109 : 10569.dasm (-25.23 % of base)
-108 : 13362.dasm (-17.14 % of base)
-108 : 5154.dasm (-23.23 % of base)
-103 : 1165.dasm (-28.14 % of base)
-103 : 11685.dasm (-25.81 % of base)
-103 : 5200.dasm (-26.89 % of base)
-100 : 10603.dasm (-25.19 % of base)
-96 : 12488.dasm (-21.19 % of base)
-95 : 2452.dasm (-31.05 % of base)
-95 : 2506.dasm (-31.05 % of base)
-95 : 2510.dasm (-31.05 % of base)
-94 : 12397.dasm (-21.86 % of base)
61 total files with Code Size differences (39 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
132 (29.73 % of base) : 12354.dasm - Microsoft.FSharp.Primitives.Basics.List:countBy[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,int],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.Nullable`1[int],int]] (FullOpts)
130 (17.29 % of base) : 9641.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:sortChunk@2484[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],Microsoft.FSharp.Core.FSharpFunc`2[System.ArraySegment`1[System.__Canon],System.__Canon],System.ArraySegment`1[System.__Canon],int) (FullOpts)
69 (24.47 % of base) : 8910.dasm - <StartupCode$FSharp-Core>.$Map:loop@860-43[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
45 (62.50 % of base) : 10978.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (75.00 % of base) : 10981.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (62.50 % of base) : 10957.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (75.00 % of base) : 10960.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
31 (12.60 % of base) : 8506.dasm - Microsoft.FSharp.Collections.SetTreeModule:compare[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):int (FullOpts)
25 (22.52 % of base) : 12066.dasm - Microsoft.FSharp.Core.ResultModule:ToValueOption[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpResult`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
17 (15.60 % of base) : 13009.dasm - Microsoft.FSharp.Core.Operators:KeyValuePattern[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
16 (8.47 % of base) : 12122.dasm - Microsoft.FSharp.Core.ValueOption:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
14 (18.18 % of base) : 10081.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
11 (4.68 % of base) : 10508.dasm - Microsoft.FSharp.Collections.SeqModule:go@978[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.__Canon,int],Microsoft.FSharp.Core.Unit):int (FullOpts)
10 (5.26 % of base) : 8595.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
10 (7.63 % of base) : 15327.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
10 (4.63 % of base) : 12405.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
8 (7.69 % of base) : 1984.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
6 (1.40 % of base) : 5146.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
6 (2.58 % of base) : 5142.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
6 (4.29 % of base) : 15285.dasm - Microsoft.FSharp.Core.Operators+NonStructuralComparison:Compare$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):int (FullOpts)
Top method improvements (bytes):
-148 (-22.49 % of base) : 12462.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-122 (-25.05 % of base) : 2256.dasm - Microsoft.FSharp.Control.TaskBuilderBase:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.Nullable`1[int]],Microsoft.FSharp.Core.Unit]:this (FullOpts)
-122 (-25.05 % of base) : 6202.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.Nullable`1[int],Microsoft.FSharp.Core.Unit] (FullOpts)
-118 (-23.55 % of base) : 12507.dasm - Microsoft.FSharp.Primitives.Basics.List:zip[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.Nullable`1[int]]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-115 (-27.45 % of base) : 2260.dasm - Microsoft.FSharp.Control.TaskBuilder:RunDynamic[System.__Canon](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-111 (-23.03 % of base) : 12465.dasm - Microsoft.FSharp.Primitives.Basics.List:transposeGetHeadsFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],int):int (FullOpts)
-110 (-31.61 % of base) : 2254.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-110 (-31.61 % of base) : 2258.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-109 (-25.23 % of base) : 10569.dasm - Microsoft.FSharp.Collections.SeqModule:oneStepTo@1233[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.List`1[System.__Canon],Microsoft.FSharp.Core.FSharpRef`1[System.__Canon],int) (FullOpts)
-108 (-23.23 % of base) : 5154.dasm - Microsoft.FSharp.Control.AsyncPrimitives:TryFinally[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
-108 (-17.14 % of base) : 13362.dasm - Microsoft.FSharp.Core.Operators:PowInteger$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):System.__Canon (FullOpts)
-103 (-28.14 % of base) : 1165.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Map[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:this (FullOpts)
-103 (-26.89 % of base) : 5200.dasm - Microsoft.FSharp.Control.AsyncPrimitives:StartAsTask[System.__Canon](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-103 (-25.81 % of base) : 11685.dasm - Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers:EnumerateTryWith[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,int],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-100 (-25.19 % of base) : 10603.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-96 (-21.19 % of base) : 12488.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-95 (-31.05 % of base) : 2506.dasm - Microsoft.FSharp.Linq.QueryBuilder:SkipWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-95 (-31.05 % of base) : 2510.dasm - Microsoft.FSharp.Linq.QueryBuilder:TakeWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-95 (-31.05 % of base) : 2452.dasm - Microsoft.FSharp.Linq.QueryBuilder:Where[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
-94 (-21.86 % of base) : 12397.dasm - Microsoft.FSharp.Primitives.Basics.List:indexed[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
45 (75.00 % of base) : 10981.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (75.00 % of base) : 10960.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (62.50 % of base) : 10978.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (62.50 % of base) : 10957.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
132 (29.73 % of base) : 12354.dasm - Microsoft.FSharp.Primitives.Basics.List:countBy[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,int],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.Nullable`1[int],int]] (FullOpts)
69 (24.47 % of base) : 8910.dasm - <StartupCode$FSharp-Core>.$Map:loop@860-43[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
25 (22.52 % of base) : 12066.dasm - Microsoft.FSharp.Core.ResultModule:ToValueOption[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpResult`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
14 (18.18 % of base) : 10081.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
130 (17.29 % of base) : 9641.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:sortChunk@2484[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],Microsoft.FSharp.Core.FSharpFunc`2[System.ArraySegment`1[System.__Canon],System.__Canon],System.ArraySegment`1[System.__Canon],int) (FullOpts)
17 (15.60 % of base) : 13009.dasm - Microsoft.FSharp.Core.Operators:KeyValuePattern[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
31 (12.60 % of base) : 8506.dasm - Microsoft.FSharp.Collections.SetTreeModule:compare[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):int (FullOpts)
16 (8.47 % of base) : 12122.dasm - Microsoft.FSharp.Core.ValueOption:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
8 (7.69 % of base) : 1984.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
10 (7.63 % of base) : 15327.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
10 (5.26 % of base) : 8595.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
11 (4.68 % of base) : 10508.dasm - Microsoft.FSharp.Collections.SeqModule:go@978[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.__Canon,int],Microsoft.FSharp.Core.Unit):int (FullOpts)
10 (4.63 % of base) : 12405.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
6 (4.29 % of base) : 15285.dasm - Microsoft.FSharp.Core.Operators+NonStructuralComparison:Compare$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):int (FullOpts)
3 (2.94 % of base) : 12130.dasm - Microsoft.FSharp.Core.ValueOption:OfObj[System.__Canon](System.__Canon):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
4 (2.70 % of base) : 12126.dasm - Microsoft.FSharp.Core.ValueOption:ToList[System.__Canon](Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
-59 (-33.71 % of base) : 9668.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:SortDescending[System.__Canon](System.__Canon[]):System.__Canon[] (FullOpts)
-43 (-32.82 % of base) : 8483.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-18 (-32.73 % of base) : 9099.dasm - Microsoft.FSharp.Collections.ArrayModule:Empty[System.__Canon]():System.__Canon[] (FullOpts)
-18 (-32.73 % of base) : 11931.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:Structural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 11964.dasm - Microsoft.FSharp.Collections.HashIdentity:Structural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 10007.dasm - Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 10411.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 15529.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
-18 (-32.73 % of base) : 15515.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericZero[System.__Canon]():System.__Canon (FullOpts)
-18 (-32.73 % of base) : 15849.dasm - Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-43 (-32.33 % of base) : 10154.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-18 (-32.14 % of base) : 11933.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
-18 (-32.14 % of base) : 11969.dasm - Microsoft.FSharp.Collections.HashIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-18 (-32.14 % of base) : 11968.dasm - Microsoft.FSharp.Collections.HashIdentity:Reference[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-63 (-31.66 % of base) : 10271.dasm - Microsoft.FSharp.Collections.ListModule:Permute[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,int],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-110 (-31.61 % of base) : 2254.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-110 (-31.61 % of base) : 2258.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
-85 (-31.25 % of base) : 1157.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int):int:this (FullOpts)
-85 (-31.25 % of base) : 1161.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[long](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],long):long:this (FullOpts)
-85 (-31.25 % of base) : 1154.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1095020 (overridden on cmd)
Total bytes of diff: 1077177 (overridden on cmd)
Total bytes of delta: -17843 (-1.63 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
46 : 11630.dasm (219.05 % of base)
46 : 1552.dasm (219.05 % of base)
3 : 6129.dasm (1.67 % of base)
3 : 2895.dasm (1.67 % of base)
1 : 11292.dasm (0.85 % of base)
1 : 10708.dasm (0.85 % of base)
1 : 11407.dasm (0.85 % of base)
1 : 4488.dasm (0.85 % of base)
1 : 6444.dasm (0.85 % of base)
1 : 6724.dasm (0.85 % of base)
1 : 7663.dasm (0.85 % of base)
1 : 887.dasm (0.85 % of base)
1 : 10147.dasm (0.85 % of base)
1 : 11539.dasm (0.85 % of base)
1 : 11871.dasm (0.85 % of base)
1 : 1304.dasm (0.85 % of base)
1 : 1468.dasm (0.85 % of base)
1 : 6536.dasm (0.85 % of base)
1 : 7932.dasm (0.85 % of base)
1 : 9888.dasm (0.85 % of base)
Top file improvements (bytes):
-457 : 27.dasm (-49.25 % of base)
-457 : 1594.dasm (-49.25 % of base)
-425 : 1589.dasm (-46.60 % of base)
-425 : 22.dasm (-46.60 % of base)
-404 : 4756.dasm (-40.28 % of base)
-404 : 2608.dasm (-40.28 % of base)
-389 : 117.dasm (-42.10 % of base)
-389 : 1684.dasm (-42.33 % of base)
-313 : 7702.dasm (-41.68 % of base)
-288 : 123.dasm (-42.86 % of base)
-288 : 1690.dasm (-42.86 % of base)
-288 : 2238.dasm (-42.86 % of base)
-288 : 6640.dasm (-42.86 % of base)
-276 : 2636.dasm (-32.13 % of base)
-276 : 4784.dasm (-32.13 % of base)
-258 : 3203.dasm (-39.94 % of base)
-258 : 5293.dasm (-39.94 % of base)
-253 : 8688.dasm (-38.98 % of base)
-186 : 3471.dasm (-19.25 % of base)
-186 : 5566.dasm (-19.21 % of base)
49 total files with Code Size differences (29 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
46 (219.05 % of base) : 11630.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (219.05 % of base) : 1552.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
3 (1.67 % of base) : 6129.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
3 (1.67 % of base) : 2895.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
1 (0.85 % of base) : 11292.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 10708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 11407.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 4488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 6444.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 6724.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 7663.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 887.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 10147.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 11539.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 11871.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 1304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 1468.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 6536.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 7932.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 9888.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-457 (-49.25 % of base) : 27.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-457 (-49.25 % of base) : 1594.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.60 % of base) : 1589.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-425 (-46.60 % of base) : 22.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-404 (-40.28 % of base) : 4756.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-404 (-40.28 % of base) : 2608.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-389 (-42.10 % of base) : 117.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-389 (-42.33 % of base) : 1684.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-313 (-41.68 % of base) : 7702.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-42.86 % of base) : 2238.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-288 (-42.86 % of base) : 6640.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-288 (-42.86 % of base) : 123.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-288 (-42.86 % of base) : 1690.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-276 (-32.13 % of base) : 2636.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-276 (-32.13 % of base) : 4784.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 3203.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-258 (-39.94 % of base) : 5293.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-253 (-38.98 % of base) : 8688.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-186 (-19.25 % of base) : 3471.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-186 (-19.21 % of base) : 5566.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
Top method regressions (percentages):
46 (219.05 % of base) : 11630.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (219.05 % of base) : 1552.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
3 (1.67 % of base) : 6129.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
3 (1.67 % of base) : 2895.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
1 (0.85 % of base) : 11292.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 10708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 11407.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 4488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 6444.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 6724.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 7663.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 887.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 10147.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 11539.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 11871.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 1304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 1468.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 6536.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 7932.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 9888.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-457 (-49.25 % of base) : 27.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-457 (-49.25 % of base) : 1594.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.60 % of base) : 1589.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-425 (-46.60 % of base) : 22.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-42.86 % of base) : 2238.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-288 (-42.86 % of base) : 6640.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-288 (-42.86 % of base) : 123.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-288 (-42.86 % of base) : 1690.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-389 (-42.33 % of base) : 1684.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-389 (-42.10 % of base) : 117.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-313 (-41.68 % of base) : 7702.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-41.35 % of base) : 12294.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier0)
-133 (-40.92 % of base) : 7701.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-40.82 % of base) : 9.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.82 % of base) : 1576.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.82 % of base) : 9974.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-81 (-40.50 % of base) : 9543.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
-404 (-40.28 % of base) : 4756.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-404 (-40.28 % of base) : 2608.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 3203.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 838544 (overridden on cmd)
Total bytes of diff: 832389 (overridden on cmd)
Total bytes of delta: -6155 (-0.73 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
77 : 6273.dasm (12.34 % of base)
70 : 4167.dasm (6.78 % of base)
61 : 9724.dasm (13.86 % of base)
50 : 4868.dasm (2.72 % of base)
45 : 848.dasm (20.55 % of base)
32 : 2920.dasm (11.11 % of base)
25 : 10512.dasm (9.12 % of base)
24 : 9821.dasm (14.20 % of base)
24 : 9733.dasm (8.45 % of base)
21 : 9711.dasm (6.84 % of base)
20 : 6688.dasm (7.72 % of base)
17 : 68.dasm (5.65 % of base)
15 : 8714.dasm (15.79 % of base)
13 : 6398.dasm (20.31 % of base)
12 : 1801.dasm (13.33 % of base)
10 : 5590.dasm (7.69 % of base)
9 : 5522.dasm (2.97 % of base)
9 : 2029.dasm (1.94 % of base)
8 : 5588.dasm (7.34 % of base)
5 : 3414.dasm (0.82 % of base)
Top file improvements (bytes):
-299 : 9687.dasm (-25.56 % of base)
-270 : 3079.dasm (-23.28 % of base)
-270 : 969.dasm (-21.84 % of base)
-177 : 9.dasm (-33.27 % of base)
-171 : 12.dasm (-34.20 % of base)
-163 : 736.dasm (-21.39 % of base)
-155 : 3327.dasm (-31.19 % of base)
-152 : 430.dasm (-25.12 % of base)
-151 : 66.dasm (-25.00 % of base)
-147 : 3086.dasm (-18.89 % of base)
-147 : 3434.dasm (-10.10 % of base)
-143 : 8673.dasm (-37.34 % of base)
-132 : 4483.dasm (-22.49 % of base)
-126 : 8710.dasm (-14.42 % of base)
-112 : 461.dasm (-21.05 % of base)
-111 : 443.dasm (-20.71 % of base)
-102 : 3435.dasm (-29.06 % of base)
-95 : 6396.dasm (-15.45 % of base)
-92 : 828.dasm (-26.29 % of base)
-83 : 595.dasm (-22.99 % of base)
55 total files with Code Size differences (34 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
77 (12.34 % of base) : 6273.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
70 (6.78 % of base) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
61 (13.86 % of base) : 9724.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
50 (2.72 % of base) : 4868.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
45 (20.55 % of base) : 848.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
32 (11.11 % of base) : 2920.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
25 (9.12 % of base) : 10512.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
24 (14.20 % of base) : 9821.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:Add[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
24 (8.45 % of base) : 9733.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
21 (6.84 % of base) : 9711.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
20 (7.72 % of base) : 6688.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
17 (5.65 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
15 (15.79 % of base) : 8714.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
13 (20.31 % of base) : 6398.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
12 (13.33 % of base) : 1801.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
10 (7.69 % of base) : 5590.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]] (FullOpts)
9 (1.94 % of base) : 2029.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
9 (2.97 % of base) : 5522.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
8 (7.34 % of base) : 5588.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
5 (0.82 % of base) : 3414.dasm - System.Linq.EnumerableExtensions:SequenceEqual[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Func`3[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],System.Collections.Generic.KeyValuePair`2[System.__Canon,int],ubyte]):ubyte (FullOpts)
Top method improvements (bytes):
-299 (-25.56 % of base) : 9687.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
-270 (-21.84 % of base) : 969.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-270 (-23.28 % of base) : 3079.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-177 (-33.27 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-171 (-34.20 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-163 (-21.39 % of base) : 736.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-155 (-31.19 % of base) : 3327.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-152 (-25.12 % of base) : 430.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-25.00 % of base) : 66.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-147 (-18.89 % of base) : 3086.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
-147 (-10.10 % of base) : 3434.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
-143 (-37.34 % of base) : 8673.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-132 (-22.49 % of base) : 4483.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-126 (-14.42 % of base) : 8710.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:ForAttributeWithMetadataName[System.__Canon](System.String,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken,ubyte],System.Func`3[Microsoft.CodeAnalysis.GeneratorAttributeSyntaxContext,System.Threading.CancellationToken,System.__Canon]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]:this (FullOpts)
-112 (-21.05 % of base) : 461.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
-111 (-20.71 % of base) : 443.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-102 (-29.06 % of base) : 3435.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-95 (-15.45 % of base) : 6396.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
-92 (-26.29 % of base) : 828.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-83 (-22.99 % of base) : 595.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
Top method regressions (percentages):
45 (20.55 % of base) : 848.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
13 (20.31 % of base) : 6398.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
15 (15.79 % of base) : 8714.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
24 (14.20 % of base) : 9821.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:Add[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
61 (13.86 % of base) : 9724.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
12 (13.33 % of base) : 1801.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
77 (12.34 % of base) : 6273.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
32 (11.11 % of base) : 2920.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
25 (9.12 % of base) : 10512.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
24 (8.45 % of base) : 9733.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
20 (7.72 % of base) : 6688.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
10 (7.69 % of base) : 5590.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]] (FullOpts)
8 (7.34 % of base) : 5588.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
21 (6.84 % of base) : 9711.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
70 (6.78 % of base) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
17 (5.65 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
9 (2.97 % of base) : 5522.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
50 (2.72 % of base) : 4868.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
9 (1.94 % of base) : 2029.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
3 (1.38 % of base) : 2352.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.ValueTuple`2[int,System.__Canon]](System.Collections.Generic.List`1[System.ValueTuple`2[int,System.__Canon]]):System.Span`1[System.ValueTuple`2[int,System.__Canon]] (FullOpts)
Top method improvements (percentages):
-143 (-37.34 % of base) : 8673.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-171 (-34.20 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-177 (-33.27 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 2202.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-64 (-32.00 % of base) : 5801.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-155 (-31.19 % of base) : 3327.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-59 (-29.50 % of base) : 3187.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
-102 (-29.06 % of base) : 3435.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-37 (-28.91 % of base) : 2283.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-18 (-28.57 % of base) : 4674.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-18 (-28.57 % of base) : 7396.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-63 (-28.51 % of base) : 49.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
-66 (-28.09 % of base) : 5560.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
-41 (-27.89 % of base) : 4245.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
-18 (-27.27 % of base) : 2327.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
-18 (-27.27 % of base) : 3699.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-37 (-27.21 % of base) : 562.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-37 (-26.62 % of base) : 1003.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon],Xunit.Sdk.TestAssemblyRunner`1+<RunAsync>d__41[System.__Canon]](byref,byref,byref) (FullOpts)
-92 (-26.29 % of base) : 828.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-18 (-26.09 % of base) : 4731.dasm - System.Collections.Immutable.ImmutableDictionary:ToImmutableDictionary[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1799819 (overridden on cmd)
Total bytes of diff: 1783459 (overridden on cmd)
Total bytes of delta: -16360 (-0.91 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
177 : 3473.dasm (17.12 % of base)
171 : 1207.dasm (3.85 % of base)
128 : 1173.dasm (36.78 % of base)
122 : 6890.dasm (17.33 % of base)
91 : 14945.dasm (74.59 % of base)
91 : 919.dasm (74.59 % of base)
46 : 5319.dasm (219.05 % of base)
45 : 3809.dasm (62.50 % of base)
45 : 671.dasm (75.00 % of base)
44 : 6557.dasm (15.07 % of base)
44 : 6560.dasm (14.86 % of base)
44 : 6536.dasm (14.57 % of base)
44 : 6547.dasm (14.57 % of base)
16 : 6482.dasm (13.79 % of base)
13 : 9704.dasm (12.26 % of base)
10 : 12352.dasm (5.26 % of base)
10 : 2470.dasm (7.63 % of base)
10 : 5198.dasm (4.63 % of base)
6 : 2827.dasm (3.82 % of base)
6 : 2860.dasm (2.62 % of base)
Top file improvements (bytes):
-266 : 3899.dasm (-23.25 % of base)
-262 : 10387.dasm (-26.44 % of base)
-184 : 9638.dasm (-28.79 % of base)
-177 : 1835.dasm (-33.27 % of base)
-177 : 233.dasm (-33.27 % of base)
-171 : 14657.dasm (-34.20 % of base)
-171 : 578.dasm (-34.20 % of base)
-160 : 6725.dasm (-22.32 % of base)
-160 : 8271.dasm (-22.99 % of base)
-152 : 1839.dasm (-25.12 % of base)
-152 : 237.dasm (-25.12 % of base)
-151 : 530.dasm (-25.00 % of base)
-151 : 5792.dasm (-10.98 % of base)
-151 : 14637.dasm (-25.00 % of base)
-148 : 5585.dasm (-22.49 % of base)
-144 : 8996.dasm (-24.91 % of base)
-140 : 5895.dasm (-28.87 % of base)
-135 : 10386.dasm (-20.74 % of base)
-119 : 8119.dasm (-25.54 % of base)
-118 : 6885.dasm (-23.89 % of base)
65 total files with Code Size differences (45 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
177 (17.12 % of base) : 3473.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
171 (3.85 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
128 (36.78 % of base) : 1173.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
122 (17.33 % of base) : 6890.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
91 (74.59 % of base) : 14945.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
91 (74.59 % of base) : 919.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
46 (219.05 % of base) : 5319.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
45 (62.50 % of base) : 3809.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
45 (75.00 % of base) : 671.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
44 (15.07 % of base) : 6557.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
44 (14.86 % of base) : 6560.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
44 (14.57 % of base) : 6547.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
44 (14.57 % of base) : 6536.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
16 (13.79 % of base) : 6482.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
13 (12.26 % of base) : 9704.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
10 (5.26 % of base) : 12352.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
10 (7.63 % of base) : 2470.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
10 (4.63 % of base) : 5198.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
6 (2.62 % of base) : 2860.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
6 (3.82 % of base) : 2827.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
Top method improvements (bytes):
-266 (-23.25 % of base) : 3899.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
-262 (-26.44 % of base) : 10387.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
-184 (-28.79 % of base) : 9638.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-177 (-33.27 % of base) : 1835.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-171 (-34.20 % of base) : 14657.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-171 (-34.20 % of base) : 578.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-160 (-22.32 % of base) : 6725.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-160 (-22.99 % of base) : 8271.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
-152 (-25.12 % of base) : 1839.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-152 (-25.12 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-10.98 % of base) : 5792.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-151 (-25.00 % of base) : 530.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-151 (-25.00 % of base) : 14637.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-148 (-22.49 % of base) : 5585.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-144 (-24.91 % of base) : 8996.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-140 (-28.87 % of base) : 5895.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-135 (-20.74 % of base) : 10386.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
-119 (-25.54 % of base) : 8119.dasm - Internal.Utilities.Library.List:loop@386-20[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-118 (-23.89 % of base) : 6885.dasm - Microsoft.FSharp.Primitives.Basics.List:zip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
46 (219.05 % of base) : 5319.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
45 (75.00 % of base) : 671.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
91 (74.59 % of base) : 14945.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
91 (74.59 % of base) : 919.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
45 (62.50 % of base) : 3809.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
128 (36.78 % of base) : 1173.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
122 (17.33 % of base) : 6890.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
177 (17.12 % of base) : 3473.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
44 (15.07 % of base) : 6557.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
44 (14.86 % of base) : 6560.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
44 (14.57 % of base) : 6547.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
44 (14.57 % of base) : 6536.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
16 (13.79 % of base) : 6482.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
13 (12.26 % of base) : 9704.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
10 (7.63 % of base) : 2470.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
10 (5.26 % of base) : 12352.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
10 (4.63 % of base) : 5198.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
171 (3.85 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
6 (3.82 % of base) : 2827.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
6 (2.62 % of base) : 2860.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (percentages):
-171 (-34.20 % of base) : 14657.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-171 (-34.20 % of base) : 578.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-177 (-33.27 % of base) : 1835.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-43 (-32.82 % of base) : 12356.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-18 (-32.73 % of base) : 11071.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 13766.dasm - System.Linq.Enumerable:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)
-85 (-32.44 % of base) : 9737.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-43 (-32.33 % of base) : 8206.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-61 (-31.61 % of base) : 5891.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-63 (-31.03 % of base) : 6312.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
-63 (-31.03 % of base) : 10593.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-63 (-30.73 % of base) : 13096.dasm - Internal.Utilities.Collections.Zmap:chooseL[System.__Canon,int,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.Tagged.Map`3[System.__Canon,int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-63 (-30.58 % of base) : 9477.dasm - Internal.Utilities.Library.List:splitChoose[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-81 (-29.78 % of base) : 5377.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-81 (-29.67 % of base) : 5632.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-63 (-29.58 % of base) : 5369.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-59 (-29.50 % of base) : 5630.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-41 (-29.08 % of base) : 8867.dasm - Microsoft.FSharp.Collections.MapModule:Iterate[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]) (FullOpts)
-41 (-29.08 % of base) : 14255.dasm - Microsoft.FSharp.Collections.MapModule:TryPick[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)