Diffs are based on 90,968 contexts (39,217 MinOpts, 51,751 FullOpts).
MISSED contexts: base: 3,450 (2.42%), diff: 47,377 (33.29%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm64.checked.mch | 987,856 | -5,876 |
benchmarks.run_pgo.linux.arm64.checked.mch | 2,956,824 | -20,412 |
benchmarks.run_tiered.linux.arm64.checked.mch | 2,289,652 | -17,264 |
coreclr_tests.run.linux.arm64.checked.mch | 535,608 | -288 |
libraries.pmi.linux.arm64.checked.mch | 1,340,444 | -6,676 |
libraries_tests.run.linux.arm64.Release.mch | 1,695,136 | -17,860 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 985,512 | -7,496 |
realworld.run.linux.arm64.checked.mch | 1,677,192 | -17,112 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.linux.arm64.checked.mch | 2,119,436 | -15,648 |
benchmarks.run_tiered.linux.arm64.checked.mch | 2,047,816 | -15,788 |
coreclr_tests.run.linux.arm64.checked.mch | 397,428 | -140 |
libraries_tests.run.linux.arm64.Release.mch | 1,599,544 | -16,532 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm64.checked.mch | 987,432 | -5,876 |
benchmarks.run_pgo.linux.arm64.checked.mch | 837,388 | -4,764 |
benchmarks.run_tiered.linux.arm64.checked.mch | 241,836 | -1,476 |
coreclr_tests.run.linux.arm64.checked.mch | 138,180 | -148 |
libraries.pmi.linux.arm64.checked.mch | 1,340,444 | -6,676 |
libraries_tests.run.linux.arm64.Release.mch | 95,592 | -1,328 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 985,512 | -7,496 |
realworld.run.linux.arm64.checked.mch | 1,664,872 | -17,112 |
@@ -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,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,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)
@@ -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)
1[System.__Canon]:CreateHiddenCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic
1ubyte@@ -19,28 +19,13 @@ G_M32739_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_M32739_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_M32739_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M32739_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_M32739_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M32739_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M32739_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_M32739_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_M32739_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M32739_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M32739_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=9911801c) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateHiddenCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=9911801c) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateHiddenCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (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)
1[System.__Canon]:CreateCharacteristic[System.__Canon](System.String):BenchmarkDotNet.Characteristics.Characteristic
1System.__Canon@@ -19,28 +19,13 @@ G_M14281_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_M14281_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_M14281_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M14281_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_M14281_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M14281_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M14281_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_M14281_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_M14281_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M14281_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M14281_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=cbf4c836) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[System.__Canon](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon] (Instrumented Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=cbf4c836) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[System.__Canon](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[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)
1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic
1ubyte@@ -19,28 +19,13 @@ G_M15908_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_M15908_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_M15908_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M15908_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_M15908_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M15908_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15908_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_M15908_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_M15908_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M15908_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M15908_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=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (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,T02] ( 3, 2.18) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.21) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.18) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.36) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.72) 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.43) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.43) 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.72) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.00) 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.18, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.18, 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.18 PerfScore 1.25
-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.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.11
-G_M58319_IG06: ; bbWeight=0.18, 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.18 PerfScore 1.25
-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.18 PerfScore 2.33
+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.26, 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.33, 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.35) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.35) 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.18
-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.18
-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.20
+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.10, 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.20, 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.18) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.22) long -> x1 single-def
-; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x19 single-def+; V00 this [V00,T02] ( 3, 2.18) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.37) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.74) 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.47) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.47) 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.74) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.03) 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.18, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.18, 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.18 PerfScore 1.29
-G_M58319_IG04: ; bbWeight=0.15, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-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.11
-G_M58319_IG06: ; bbWeight=0.18, 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.18 PerfScore 1.29
-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.18 PerfScore 2.39
+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.33, 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.39, 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
@@ -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_M34864_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_M34864_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_M34864_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M34864_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_M34864_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M34864_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M34864_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_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; gcrRegs +[x1]
@@ -51,13 +36,13 @@ G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M34864_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=56 bbWeight=1 PerfScore 15.50
+G_M34864_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30
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=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 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (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:
@@ -68,7 +53,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)
@@ -91,9 +91,11 @@ G_M33714_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #29- 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]
@@ -183,7 +185,7 @@ G_M33714_IG13: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS+ bl CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG ; gcr arg pop 0
str x0, [fp, #0x48] // [V11 tmp4]
;; size=24 bbWeight=0.20 PerfScore 1.10
@@ -237,7 +239,7 @@ G_M33714_IG16: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS+ bl CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG ; gcr arg pop 0
str x0, [fp, #0x38] // [V13 tmp6]
;; size=24 bbWeight=0.20 PerfScore 1.10
@@ -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
@@ -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, #0xD1FFAB1E 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)
@@ -7,16 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T04] ( 3, 3 ) byref -> x21 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T03] ( 3, 3 ) byref -> x21 single-def ;# 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,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V07 rat0 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> x1 "spilling expr"
-; V09 rat2 [V09,T05] ( 3, 4.48) long -> x2 "fgMakeTemp is creating a new local variable"+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -33,28 +30,12 @@ G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x21, x3
; byrRegs +[x21]
;; size=32 bbWeight=1 PerfScore 6.00-G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cmp x2, #32
- ble G_M252_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M252_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ldr x2, [x1, #0x20]
- cbz x2, G_M252_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M252_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
- mov x0, x2
- b G_M252_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M252_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref+G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, 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.36 PerfScore 0.90
-G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref mov x1, x19
; gcrRegs +[x1]
mov x2, x20
@@ -65,8 +46,8 @@ G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M252_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=44 bbWeight=1 PerfScore 8.50
+G_M252_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -74,7 +55,7 @@ G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 124, prolog size 32, PerfScore 29.56, instruction count 31, allocated bytes for code 124 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)+; Total bytes of code 92, prolog size 32, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -85,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)+ 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)
@@ -7,16 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T04] ( 3, 3 ) byref -> x21 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T03] ( 3, 3 ) byref -> x21 single-def ;# 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,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V07 rat0 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> x1 "spilling expr"
-; V09 rat2 [V09,T05] ( 3, 4.48) long -> x2 "fgMakeTemp is creating a new local variable"+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -33,28 +30,12 @@ G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x21, x3
; byrRegs +[x21]
;; size=32 bbWeight=1 PerfScore 6.00-G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cmp x2, #32
- ble G_M252_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M252_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ldr x2, [x1, #0x20]
- cbz x2, G_M252_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M252_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
- mov x0, x2
- b G_M252_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M252_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref+G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, 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.36 PerfScore 0.90
-G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref mov x1, x19
; gcrRegs +[x1]
mov x2, x20
@@ -65,8 +46,8 @@ G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M252_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=44 bbWeight=1 PerfScore 8.50
+G_M252_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -74,7 +55,7 @@ G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 124, prolog size 32, PerfScore 29.56, instruction count 31, allocated bytes for code 124 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)+; Total bytes of code 92, prolog size 32, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1) ; ============================================================
Unwind Info:
@@ -85,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)+ 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)
@@ -8,7 +8,7 @@
; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <System.Object>
;# 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_M43438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x58] // [V00 arg0]
;; size=12 bbWeight=1 PerfScore 2.50
G_M43438_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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -54,13 +59,13 @@ G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3- ;; size=132 bbWeight=1 PerfScore 38.50+ ;; size=144 bbWeight=1 PerfScore 47.00 G_M43438_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=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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; 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.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
@@ -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
@@ -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)
@@ -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] (Tier1)+; 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] (Tier1) ; ============================================================
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)
1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Nullable
1[System.ValueTuple2[Microsoft.CodeAnalysis.Diagnostics.SourceOrAdditionalFile,ubyte]]):System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]:this (Tier0)@@ -121,9 +121,11 @@ G_M23760_IG05: ; 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]
@@ -139,7 +141,7 @@ G_M23760_IG05: ; 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] // [V15 tmp8]
@@ -148,9 +150,11 @@ G_M23760_IG05: ; 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]
@@ -173,7 +177,8 @@ G_M23760_IG05: ; 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
ldr x15, [fp, #0x18] // [V15 tmp8]
; gcrRegs +[x15]
@@ -182,6 +187,7 @@ G_M23760_IG05: ; 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] // [V15 tmp8]
; gcrRegs +[x0]
str x0, [fp, #0x30] // [V13 tmp6]
@@ -13,24 +13,25 @@
; V01 arg1 [V01,T00] ( 10, 5.20) ref -> x19 class-hnd single-def <System.Object>
; V02 arg2 [V02,T01] ( 7, 4.40) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V04 tmp1 [V04,T08] ( 3, 0.87) int -> x21 "guarded devirt return temp"+; V04 tmp1 [V04,T09] ( 3, 0.80) int -> x0 "guarded devirt return temp" ; V05 tmp2 [V05,T07] ( 4, 1.49) ref -> x19 class-hnd exact single-def "guarded devirt this exact temp" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V09 tmp6 [V09,T04] ( 5, 1.63) ref -> x20 class-hnd exact "Inline stloc first use temp" <System.String>
-; V10 tmp7 [V10,T05] ( 2, 1.60) byref -> x0 single-def "impAppendStmt"+; V08 tmp5 [V08,T08] ( 4, 1.49) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V09 tmp6 [V09,T05] ( 2, 1.60) byref -> x0 single-def "impAppendStmt"
+;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp13 [V16,T06] ( 2, 1.60) int -> x0 "Single return block return value"
-; V17 cse0 [V17,T03] ( 2, 2 ) ref -> x1 "CSE - aggressive"+; V15 tmp12 [V15,T06] ( 2, 1.60) int -> x0 "Single return block return value"
+; V16 cse0 [V16,T04] ( 2, 2 ) ref -> x1 "CSE - aggressive"
+; V17 rat0 [V17,T03] ( 5, 3 ) ref -> x20 "replacement local"
+; V18 rat1 [V18,T10] ( 2, 0.80) long -> x2 "CSE for expectedClsNode" ;
; Lcl frame size = 8
-G_M51920_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M51920_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]
@@ -61,7 +62,7 @@ G_M51920_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr x0, [x21, #0x08]
; gcrRegs +[x0]
cmp x0, x19- beq G_M51920_IG13+ beq G_M51920_IG16 cmp x19, x20
bne G_M51920_IG06
;; size=20 bbWeight=1 PerfScore 6.00
@@ -79,33 +80,36 @@ G_M51920_IG06: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=380
; gcrRegs +[x19-x21]
ldr x2, [x21, #0x20]
; gcrRegs +[x2]- cbnz x2, G_M51920_IG15
- cbz x19, G_M51920_IG13+ cbnz x2, G_M51920_IG18
+ cbz x19, G_M51920_IG16 ldr x2, [x19]
; gcrRegs -[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x2, x1- bne G_M51920_IG17
- cbz x20, G_M51920_IG12+ bne G_M51920_IG14
+ cbz x20, G_M51920_IG08 ;; size=40 bbWeight=0.40 PerfScore 4.80-G_M51920_IG07: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz+G_M51920_IG07: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x21]- ldr x2, [x20]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x2, x1
- bne G_M51920_IG12
- ;; size=24 bbWeight=0.14 PerfScore 0.86
-G_M51920_IG08: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x1, [x20]
+ cmp x1, x2
+ bne G_M51920_IG13
+ ;; size=24 bbWeight=0.20 PerfScore 1.20
+G_M51920_IG08: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M51920_IG20
+ ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M51920_IG09: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x08]
ldr w1, [x20, #0x08]
cmp w2, w1- bne G_M51920_IG12+ bne G_M51920_IG20 ;; size=16 bbWeight=0.29 PerfScore 2.14-G_M51920_IG09: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref+G_M51920_IG10: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref add x0, x19, #12
; byrRegs +[x0]
ldr w2, [x19, #0x08]
@@ -121,32 +125,50 @@ G_M51920_IG09: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x19-x20]
; byrRegs -[x0-x1]
; gcr arg pop 0- sxtw w21, w0
- ;; size=44 bbWeight=0.40 PerfScore 4.60
-G_M51920_IG10: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxtb w0, w21+ ;; size=40 bbWeight=0.40 PerfScore 4.40
+G_M51920_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ uxtb w0, w0 uxtb w0, w0
;; size=8 bbWeight=0.40 PerfScore 0.40-G_M51920_IG11: ; bbWeight=0.40, epilog, nogc, extend+G_M51920_IG12: ; bbWeight=0.40, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.40 PerfScore 2.00-G_M51920_IG12: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w21, wzr
- b G_M51920_IG10
- ;; size=8 bbWeight=0.07 PerfScore 0.11
-G_M51920_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M51920_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ b G_M51920_IG08
+ ;; size=8 bbWeight=0.10 PerfScore 0.15
+G_M51920_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
+ ; gcrRegs +[x0]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ ldr x2, [x19]
+ ldr x2, [x2, #0x48]
+ ldr x2, [x2, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M51920_IG15: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ br x2
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M51920_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0-x1 x19-x20] mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00-G_M51920_IG14: ; bbWeight=0, epilog, nogc, extend+G_M51920_IG17: ; bbWeight=0, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0 PerfScore 0.00-G_M51920_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref+G_M51920_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x19-x21]
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
@@ -160,32 +182,20 @@ G_M51920_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000
ldr wzr, [x0]
ldr x3, [x11]
;; size=32 bbWeight=0 PerfScore 0.00-G_M51920_IG16: ; bbWeight=0, epilog, nogc, extend+G_M51920_IG19: ; bbWeight=0, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00-G_M51920_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0-x2 x21]
- mov x0, x19
- ; gcrRegs +[x0]
- mov x1, x20
- ; gcrRegs +[x1]
- ldr x2, [x19]
- ldr x2, [x2, #0x48]
- ldr x2, [x2, #0x10]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M51920_IG18: ; bbWeight=0, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- br x2
- ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00+G_M51920_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0-x2 x19-x21]
+ mov w0, wzr
+ b G_M51920_IG11
+ ;; size=8 bbWeight=0 PerfScore 0.00 -; Total bytes of code 376, prolog size 28, PerfScore 38.71, instruction count 94, allocated bytes for code 376 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)+; Total bytes of code 384, prolog size 28, PerfScore 39.29, instruction count 96, allocated bytes for code 384 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1) ; ============================================================
Unwind Info:
@@ -196,7 +206,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)+ Function Length : 96 (0x00060) Actual length = 384 (0x000180) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -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)
@@ -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[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 | 143 | 112 | 5 | 26 | -5,944 | +68 |
benchmarks.run_pgo.linux.arm64.checked.mch | 387 | 326 | 33 | 28 | -20,676 | +264 |
benchmarks.run_tiered.linux.arm64.checked.mch | 266 | 229 | 1 | 36 | -17,272 | +8 |
coreclr_tests.run.linux.arm64.checked.mch | 83 | 52 | 26 | 5 | -464 | +176 |
libraries.crossgen2.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.linux.arm64.checked.mch | 364 | 214 | 40 | 110 | -7,760 | +1,084 |
libraries_tests.run.linux.arm64.Release.mch | 276 | 261 | 2 | 13 | -17,888 | +28 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 193 | 138 | 14 | 41 | -7,900 | +404 |
realworld.run.linux.arm64.checked.mch | 350 | 317 | 14 | 19 | -17,520 | +408 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
2,062 | 1,649 | 135 | 278 | -95,424 | +2,440 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 4,984 | 3 | 4,981 | 479 (4.91%) | 4,380 (44.87%) |
benchmarks.run_pgo.linux.arm64.checked.mch | 17,795 | 14,290 | 3,505 | 335 (1.25%) | 8,686 (32.32%) |
benchmarks.run_tiered.linux.arm64.checked.mch | 15,308 | 13,287 | 2,021 | 89 (0.43%) | 5,233 (24.99%) |
coreclr_tests.run.linux.arm64.checked.mch | 2,283 | 1,393 | 890 | 40 (0.84%) | 2,080 (43.71%) |
libraries.crossgen2.linux.arm64.checked.mch | 8,252 | 10 | 8,242 | 0 (0.00%) | 2,959 (25.49%) |
libraries.pmi.linux.arm64.checked.mch | 13,937 | 0 | 13,937 | 297 (1.43%) | 6,428 (30.96%) |
libraries_tests.run.linux.arm64.Release.mch | 10,746 | 10,122 | 624 | 59 (0.37%) | 4,734 (29.82%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 5,023 | 0 | 5,023 | 849 (9.00%) | 4,012 (42.53%) |
realworld.run.linux.arm64.checked.mch | 9,190 | 110 | 9,080 | 1,047 (7.24%) | 4,872 (33.70%) |
smoke_tests.nativeaot.linux.arm64.checked.mch | 3,450 | 2 | 3,448 | 255 (3.25%) | 3,993 (50.94%) |
90,968 | 39,217 | 51,751 | 3,450 (2.42%) | 47,377 (33.29%) |
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: 987856 (overridden on cmd)
Total bytes of diff: 981980 (overridden on cmd)
Total bytes of delta: -5876 (-0.59 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
36 : 6825.dasm (3.83 % of base)
20 : 4194.dasm (6.25 % of base)
4 : 10006.dasm (4.55 % of base)
4 : 1415.dasm (4.55 % of base)
4 : 10098.dasm (5.56 % of base)
Top file improvements (bytes):
-328 : 7957.dasm (-23.98 % of base)
-212 : 240.dasm (-30.99 % of base)
-212 : 736.dasm (-33.12 % of base)
-208 : 4294.dasm (-15.76 % of base)
-184 : 244.dasm (-24.34 % of base)
-184 : 694.dasm (-26.14 % of base)
-156 : 1487.dasm (-29.32 % of base)
-144 : 5793.dasm (-15.06 % of base)
-136 : 6889.dasm (-30.63 % of base)
-132 : 4785.dasm (-19.30 % of base)
-128 : 5518.dasm (-25.81 % of base)
-128 : 632.dasm (-18.71 % of base)
-128 : 2226.dasm (-27.12 % of base)
-100 : 5583.dasm (-24.04 % of base)
-100 : 7842.dasm (-20.49 % of base)
-100 : 209.dasm (-19.84 % of base)
-100 : 8777.dasm (-15.82 % of base)
-92 : 1170.dasm (-22.12 % of base)
-72 : 1249.dasm (-25.00 % of base)
-72 : 1486.dasm (-23.38 % of base)
48 total files with Code Size differences (43 improved, 5 regressed), 22 unchanged.
Top method regressions (bytes):
36 (3.83 % of base) : 6825.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
20 (6.25 % of base) : 4194.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) : 1415.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (5.56 % of base) : 10098.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
4 (4.55 % of base) : 10006.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
Top method improvements (bytes):
-328 (-23.98 % of base) : 7957.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) : 240.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) : 736.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-15.76 % of base) : 4294.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
-184 (-24.34 % of base) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-184 (-26.14 % of base) : 694.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) : 1487.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) : 5793.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) : 6889.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.30 % of base) : 4785.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) : 2226.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) : 5518.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-128 (-18.71 % of base) : 632.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-15.82 % of base) : 8777.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
-100 (-20.49 % of base) : 7842.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-100 (-24.04 % of base) : 5583.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) : 209.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) : 1170.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
-72 (-13.33 % of base) : 7853.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) : 243.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) : 4194.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) : 10098.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
4 (4.55 % of base) : 1415.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (4.55 % of base) : 10006.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
36 (3.83 % of base) : 6825.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 736.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-212 (-30.99 % of base) : 240.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) : 9165.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 6889.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-156 (-29.32 % of base) : 1487.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) : 2226.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) : 7757.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-184 (-26.14 % of base) : 694.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) : 5518.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-72 (-25.00 % of base) : 1249.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) : 4382.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-44 (-25.00 % of base) : 2140.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)
-44 (-24.44 % of base) : 7488.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-44 (-24.44 % of base) : 4475.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) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-24.04 % of base) : 5583.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) : 243.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) : 7957.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) : 8974.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-72 (-23.38 % of base) : 1486.dasm - System.Linq.Enumerable:Take[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: 2956824 (overridden on cmd)
Total bytes of diff: 2936412 (overridden on cmd)
Total bytes of delta: -20412 (-0.69 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
8 : 13079.dasm (6.06 % of base)
8 : 16195.dasm (6.06 % of base)
8 : 17731.dasm (6.06 % of base)
8 : 18579.dasm (6.06 % of base)
8 : 21208.dasm (6.06 % of base)
8 : 25052.dasm (6.06 % of base)
8 : 25382.dasm (6.06 % of base)
8 : 25708.dasm (6.06 % of base)
8 : 4295.dasm (6.06 % of base)
8 : 4399.dasm (6.06 % of base)
8 : 4511.dasm (6.06 % of base)
8 : 4927.dasm (6.06 % of base)
8 : 5096.dasm (6.06 % of base)
8 : 6396.dasm (6.06 % of base)
8 : 8820.dasm (6.06 % of base)
8 : 9079.dasm (6.06 % of base)
8 : 15836.dasm (6.06 % of base)
8 : 13356.dasm (6.06 % of base)
8 : 13599.dasm (6.06 % of base)
8 : 22238.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 2536.dasm (-45.34 % of base)
-428 : 864.dasm (-42.63 % of base)
-372 : 2407.dasm (-37.35 % of base)
-372 : 872.dasm (-35.36 % of base)
-316 : 4953.dasm (-40.10 % of base)
-316 : 8553.dasm (-37.44 % of base)
-296 : 5775.dasm (-39.78 % of base)
-268 : 15534.dasm (-40.36 % of base)
-260 : 10704.dasm (-40.88 % of base)
-260 : 2240.dasm (-27.66 % of base)
-260 : 23805.dasm (-37.36 % of base)
-240 : 343.dasm (-32.97 % of base)
-212 : 23855.dasm (-33.12 % of base)
-212 : 24918.dasm (-33.12 % of base)
-212 : 20710.dasm (-33.12 % of base)
-204 : 722.dasm (-30.18 % of base)
-204 : 8042.dasm (-23.50 % of base)
-204 : 8424.dasm (-32.28 % of base)
-204 : 9611.dasm (-30.00 % of base)
-204 : 10708.dasm (-34.46 % of base)
70 total files with Code Size differences (50 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
8 (6.06 % of base) : 13079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16195.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 17731.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 18579.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21208.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25382.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4295.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4399.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4511.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4927.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 5096.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8820.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15836.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 13356.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 13599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22238.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) : 864.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) : 2536.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 872.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 2407.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) : 4953.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) : 8553.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 5775.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) : 15534.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 (-40.88 % of base) : 10704.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 (-37.36 % of base) : 23805.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 2240.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 343.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 23855.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 24918.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 20710.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-32.28 % of base) : 8424.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-23.50 % of base) : 8042.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
-204 (-30.00 % of base) : 9611.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-34.46 % of base) : 10708.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) : 722.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):
8 (6.06 % of base) : 13079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 16195.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 17731.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 18579.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21208.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25382.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 25708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4295.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4399.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4511.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 4927.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 5096.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 8820.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15836.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 13356.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 13599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22238.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) : 2536.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 864.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) : 7703.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.82 % of base) : 8284.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-148 (-41.57 % of base) : 5091.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-260 (-40.88 % of base) : 10704.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)
-268 (-40.36 % of base) : 15534.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) : 4953.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) : 5775.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) : 6727.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-92 (-38.33 % of base) : 8884.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
-316 (-37.44 % of base) : 8553.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-260 (-37.36 % of base) : 23805.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-372 (-37.35 % of base) : 2407.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) : 2521.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) : 4952.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) : 17715.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 7557.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) : 13227.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) : 3946.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 linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2289652 (overridden on cmd)
Total bytes of diff: 2272388 (overridden on cmd)
Total bytes of delta: -17264 (-0.75 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
8 : 1552.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 2263.dasm (-45.34 % of base)
-428 : 764.dasm (-42.63 % of base)
-372 : 2164.dasm (-37.96 % of base)
-372 : 771.dasm (-35.36 % of base)
-316 : 3177.dasm (-40.10 % of base)
-316 : 12391.dasm (-37.44 % of base)
-296 : 9341.dasm (-39.78 % of base)
-268 : 6598.dasm (-40.36 % of base)
-260 : 2003.dasm (-27.66 % of base)
-260 : 4152.dasm (-40.88 % of base)
-260 : 17481.dasm (-37.36 % of base)
-240 : 329.dasm (-32.97 % of base)
-212 : 5212.dasm (-33.12 % of base)
-204 : 12343.dasm (-32.28 % of base)
-204 : 5628.dasm (-23.50 % of base)
-204 : 667.dasm (-30.18 % of base)
-204 : 6722.dasm (-34.46 % of base)
-204 : 7211.dasm (-30.00 % of base)
-204 : 18480.dasm (-25.76 % of base)
-184 : 15578.dasm (-15.86 % of base)
51 total files with Code Size differences (50 improved, 1 regressed), 29 unchanged.
Top method regressions (bytes):
8 (6.06 % of base) : 1552.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) : 764.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) : 2263.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 771.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)
-316 (-40.10 % of base) : 3177.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) : 12391.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 9341.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) : 6598.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 (-40.88 % of base) : 4152.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
-260 (-37.36 % of base) : 17481.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 2003.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 329.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 5212.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-25.76 % of base) : 18480.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
-204 (-32.28 % of base) : 12343.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 7211.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-23.50 % of base) : 5628.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
-204 (-34.46 % of base) : 6722.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) : 667.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 (-15.86 % of base) : 15578.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):
8 (6.06 % of base) : 1552.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) : 2263.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 764.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) : 11810.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-148 (-41.57 % of base) : 3312.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-41.07 % of base) : 12225.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-260 (-40.88 % of base) : 4152.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
-268 (-40.36 % of base) : 6598.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) : 3177.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) : 9341.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) : 18759.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 3581.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-92 (-38.33 % of base) : 7291.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) : 8867.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) : 12391.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-148 (-37.37 % of base) : 2247.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)
-260 (-37.36 % of base) : 17481.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-148 (-36.63 % of base) : 3176.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) : 10331.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 8869.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: 535608 (overridden on cmd)
Total bytes of diff: 535320 (overridden on cmd)
Total bytes of delta: -288 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
28 : 4393.dasm (9.86 % of base)
12 : 3932.dasm (7.89 % of base)
12 : 4088.dasm (7.89 % of base)
12 : 4120.dasm (8.33 % of base)
12 : 4303.dasm (7.14 % of base)
12 : 4373.dasm (6.82 % of base)
12 : 4383.dasm (6.98 % of base)
4 : 3842.dasm (3.70 % of base)
4 : 3836.dasm (3.70 % of base)
4 : 3848.dasm (3.70 % of base)
4 : 3854.dasm (3.70 % of base)
4 : 4170.dasm (3.70 % of base)
4 : 4180.dasm (3.70 % of base)
4 : 4222.dasm (3.70 % of base)
4 : 4232.dasm (3.70 % of base)
4 : 4242.dasm (3.85 % of base)
4 : 4283.dasm (3.70 % of base)
4 : 4323.dasm (3.70 % of base)
4 : 4343.dasm (3.70 % of base)
4 : 4363.dasm (3.70 % of base)
Top file improvements (bytes):
-36 : 1449.dasm (-15.79 % of base)
-36 : 281.dasm (-28.12 % of base)
-36 : 2860.dasm (-18.00 % of base)
-36 : 901.dasm (-15.79 % of base)
-32 : 2937.dasm (-25.81 % of base)
-32 : 2641.dasm (-17.39 % of base)
-32 : 2229.dasm (-25.81 % of base)
-32 : 2797.dasm (-21.62 % of base)
-20 : 2382.dasm (-8.93 % of base)
-4 : 3677.dasm (-3.70 % of base)
-4 : 3861.dasm (-3.70 % of base)
-4 : 3867.dasm (-3.70 % of base)
-4 : 3872.dasm (-3.70 % of base)
-4 : 3878.dasm (-3.70 % of base)
-4 : 3884.dasm (-3.70 % of base)
-4 : 3891.dasm (-3.70 % of base)
-4 : 3902.dasm (-3.70 % of base)
-4 : 3913.dasm (-3.57 % of base)
-4 : 3965.dasm (-3.70 % of base)
-4 : 3975.dasm (-3.70 % of base)
54 total files with Code Size differences (34 improved, 20 regressed), 5 unchanged.
Top method regressions (bytes):
28 (9.86 % of base) : 4393.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 4088.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (8.33 % of base) : 4120.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 3932.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.14 % of base) : 4303.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.82 % of base) : 4373.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.98 % of base) : 4383.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3836.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 4170.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4180.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4222.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4232.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.85 % of base) : 4242.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3842.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 4283.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4323.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3848.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 4343.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4363.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3854.dasm - NullableTest5:BoxUnboxToQ(IEmpty):ubyte (Tier0)
Top method improvements (bytes):
-36 (-28.12 % of base) : 281.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) : 1449.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) : 901.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)
-36 (-18.00 % of base) : 2860.dasm - System.Threading.Tasks.Task:AddToList[System.__Canon](System.__Canon,byref,int) (Tier0)
-32 (-21.62 % of base) : 2797.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
-32 (-25.81 % of base) : 2229.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-32 (-25.81 % of base) : 2937.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
-32 (-17.39 % of base) : 2641.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
-20 (-8.93 % of base) : 2382.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 (Tier1)
-4 (-3.70 % of base) : 3677.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 3965.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3884.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-2.94 % of base) : 5069.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 3891.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 4066.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3902.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.57 % of base) : 4097.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.57 % of base) : 3913.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 4138.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-2.94 % of base) : 4973.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
Top method regressions (percentages):
28 (9.86 % of base) : 4393.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (8.33 % of base) : 4120.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 4088.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 3932.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.14 % of base) : 4303.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.98 % of base) : 4383.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.82 % of base) : 4373.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.85 % of base) : 4242.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3836.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 4170.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4180.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4222.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4232.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3842.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 4283.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4323.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3848.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 4343.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4363.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3854.dasm - NullableTest5:BoxUnboxToQ(IEmpty):ubyte (Tier0)
Top method improvements (percentages):
-36 (-28.12 % of base) : 281.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-32 (-25.81 % of base) : 2229.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-32 (-25.81 % of base) : 2937.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
-32 (-21.62 % of base) : 2797.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
-36 (-18.00 % of base) : 2860.dasm - System.Threading.Tasks.Task:AddToList[System.__Canon](System.__Canon,byref,int) (Tier0)
-32 (-17.39 % of base) : 2641.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
-36 (-15.79 % of base) : 1449.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) : 901.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)
-20 (-8.93 % of base) : 2382.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 (Tier1)
-4 (-3.70 % of base) : 3677.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 3965.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3884.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 3891.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 4066.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3902.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-4 (-3.70 % of base) : 4138.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3684.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 3975.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3985.dasm - NullableTest3:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3995.dasm - NullableTest4:BoxUnboxToQ(System.Object):ubyte (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: 1340444 (overridden on cmd)
Total bytes of diff: 1333768 (overridden on cmd)
Total bytes of delta: -6676 (-0.50 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
96 : 2824.dasm (23.53 % of base)
84 : 2822.dasm (23.60 % of base)
76 : 13457.dasm (19.39 % of base)
64 : 13459.dasm (51.61 % of base)
56 : 13467.dasm (33.33 % of base)
56 : 2820.dasm (17.95 % of base)
52 : 13465.dasm (22.41 % of base)
44 : 2818.dasm (16.92 % of base)
28 : 1153.dasm (18.42 % of base)
28 : 1163.dasm (18.42 % of base)
28 : 1001.dasm (22.58 % of base)
28 : 1154.dasm (18.42 % of base)
28 : 1162.dasm (18.42 % of base)
28 : 17720.dasm (21.21 % of base)
24 : 5432.dasm (23.08 % of base)
24 : 5430.dasm (23.08 % of base)
20 : 13290.dasm (17.86 % of base)
20 : 13300.dasm (17.86 % of base)
20 : 13308.dasm (17.86 % of base)
20 : 16735.dasm (2.69 % of base)
Top file improvements (bytes):
-184 : 805.dasm (-31.72 % of base)
-180 : 13367.dasm (-20.93 % of base)
-156 : 6139.dasm (-30.47 % of base)
-136 : 864.dasm (-19.65 % of base)
-128 : 866.dasm (-22.70 % of base)
-124 : 2719.dasm (-21.23 % of base)
-112 : 13359.dasm (-22.76 % of base)
-104 : 1009.dasm (-25.74 % of base)
-96 : 819.dasm (-19.35 % of base)
-88 : 13448.dasm (-12.36 % of base)
-88 : 13883.dasm (-20.37 % of base)
-76 : 1020.dasm (-18.45 % of base)
-76 : 826.dasm (-22.62 % of base)
-76 : 1016.dasm (-18.45 % of base)
-76 : 796.dasm (-12.03 % of base)
-72 : 11865.dasm (-10.98 % of base)
-72 : 1549.dasm (-30.51 % of base)
-72 : 1551.dasm (-30.51 % of base)
-72 : 5422.dasm (-26.09 % of base)
-72 : 5424.dasm (-26.09 % of base)
74 total files with Code Size differences (53 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
96 (23.53 % of base) : 2824.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) : 2822.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)
76 (19.39 % of base) : 13457.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Reverse[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int) (FullOpts)
64 (51.61 % of base) : 13459.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]) (FullOpts)
56 (33.33 % of base) : 13467.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],System.Comparison`1[System.__Canon]) (FullOpts)
56 (17.95 % of base) : 2820.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)
52 (22.41 % of base) : 13465.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
44 (16.92 % of base) : 2818.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 (21.21 % of base) : 17720.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1+ValueBuilder[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
28 (22.58 % of base) : 1001.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) : 1153.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) : 1154.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) : 1162.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) : 1163.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) : 5430.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) : 5432.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
20 (17.86 % of base) : 13308.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon,System.Nullable`1[int]](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]):ubyte (FullOpts)
20 (17.86 % of base) : 13300.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]):ubyte (FullOpts)
20 (17.86 % of base) : 13290.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]):ubyte (FullOpts)
20 (2.69 % of base) : 16735.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+<>c:<GetAnalyzerTypeNameMap>b__34_11(System.Linq.IGrouping`2[System.String,System.String]):System.Collections.Immutable.ImmutableHashSet`1[System.String]:this (FullOpts)
Top method improvements (bytes):
-184 (-31.72 % of base) : 805.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
-180 (-20.93 % of base) : 13367.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:CopyOverlapped[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int,int) (FullOpts)
-156 (-30.47 % of base) : 6139.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)
-136 (-19.65 % of base) : 864.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) : 866.dasm - Roslyn.Utilities.EnumerableExtensions:AsSingleton[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-124 (-21.23 % of base) : 2719.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)
-112 (-22.76 % of base) : 13359.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Clear[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int) (FullOpts)
-104 (-25.74 % of base) : 1009.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) : 819.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)
-88 (-12.36 % of base) : 13448.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:LastIndexOf[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
-88 (-20.37 % of base) : 13883.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:this (FullOpts)
-76 (-22.62 % of base) : 826.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) : 796.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) : 1016.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) : 1020.dasm - Roslyn.Utilities.ISetExtensions:RemoveAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-72 (-10.98 % of base) : 11865.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 (-26.09 % of base) : 5422.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) : 5424.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) : 812.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) : 1547.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):
64 (51.61 % of base) : 13459.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]) (FullOpts)
56 (33.33 % of base) : 13467.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],System.Comparison`1[System.__Canon]) (FullOpts)
84 (23.60 % of base) : 2822.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) : 2824.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) : 5430.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) : 5432.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) : 1001.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
52 (22.41 % of base) : 13465.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
28 (21.21 % of base) : 17720.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1+ValueBuilder[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
76 (19.39 % of base) : 13457.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Reverse[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int) (FullOpts)
28 (18.42 % of base) : 1153.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) : 1154.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) : 1162.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) : 1163.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) : 2820.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)
20 (17.86 % of base) : 13308.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon,System.Nullable`1[int]](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]):ubyte (FullOpts)
20 (17.86 % of base) : 13300.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]):ubyte (FullOpts)
20 (17.86 % of base) : 13290.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]):ubyte (FullOpts)
44 (16.92 % of base) : 2818.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) : 5420.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)
Top method improvements (percentages):
-56 (-32.56 % of base) : 856.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) : 934.dasm - Roslyn.Utilities.ImmutableListExtensions:ToImmutableListOrEmpty[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
-56 (-32.56 % of base) : 936.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) : 805.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
-72 (-30.51 % of base) : 1547.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) : 1549.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) : 1551.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) : 6139.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) : 858.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) : 1545.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) : 1531.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-44 (-26.83 % of base) : 786.dasm - Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-44 (-26.19 % of base) : 12646.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
-44 (-26.19 % of base) : 758.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) : 5422.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) : 5424.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) : 812.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) : 1538.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerator[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-104 (-25.74 % of base) : 1009.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) : 841.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: 1695136 (overridden on cmd)
Total bytes of diff: 1677276 (overridden on cmd)
Total bytes of delta: -17860 (-1.05 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
20 : 4838.dasm (6.25 % of base)
8 : 5649.dasm (2.13 % of base)
Top file improvements (bytes):
-428 : 34.dasm (-41.96 % of base)
-428 : 42.dasm (-43.85 % of base)
-372 : 149.dasm (-37.35 % of base)
-372 : 1261.dasm (-36.47 % of base)
-296 : 1966.dasm (-39.78 % of base)
-260 : 2913.dasm (-43.92 % of base)
-260 : 768.dasm (-40.37 % of base)
-260 : 1291.dasm (-28.14 % of base)
-260 : 156.dasm (-40.37 % of base)
-260 : 4633.dasm (-40.88 % of base)
-240 : 5779.dasm (-32.97 % of base)
-212 : 3928.dasm (-33.12 % of base)
-212 : 2064.dasm (-33.12 % of base)
-204 : 10996.dasm (-30.00 % of base)
-204 : 1556.dasm (-32.48 % of base)
-204 : 4356.dasm (-34.46 % of base)
-184 : 1308.dasm (-31.72 % of base)
-184 : 2278.dasm (-15.44 % of base)
-184 : 4828.dasm (-22.89 % of base)
-148 : 5961.dasm (-41.11 % of base)
63 total files with Code Size differences (61 improved, 2 regressed), 13 unchanged.
Top method regressions (bytes):
20 (6.25 % of base) : 4838.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
8 (2.13 % of base) : 5649.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
Top method improvements (bytes):
-428 (-41.96 % of base) : 34.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) : 42.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-36.47 % of base) : 1261.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 149.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)
-296 (-39.78 % of base) : 1966.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) : 4633.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 768.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) : 156.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) : 1291.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-260 (-43.92 % of base) : 2913.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-240 (-32.97 % of base) : 5779.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
-212 (-33.12 % of base) : 3928.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 2064.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-30.00 % of base) : 10996.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
-204 (-34.46 % of base) : 4356.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-32.48 % of base) : 1556.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-184 (-31.72 % of base) : 1308.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 (-22.89 % of base) : 4828.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)
-184 (-15.44 % of base) : 2278.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-148 (-43.53 % of base) : 8065.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
Top method regressions (percentages):
20 (6.25 % of base) : 4838.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
8 (2.13 % of base) : 5649.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
Top method improvements (percentages):
-260 (-43.92 % of base) : 2913.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-428 (-43.85 % of base) : 42.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-148 (-43.53 % of base) : 8065.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
-428 (-41.96 % of base) : 34.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-41.57 % of base) : 6647.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-148 (-41.11 % of base) : 5961.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
-92 (-41.07 % of base) : 14994.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]] (Instrumented Tier0)
-92 (-41.07 % of base) : 4592.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]] (Tier0)
-260 (-40.88 % of base) : 4633.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 768.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) : 156.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-148 (-40.22 % of base) : 8118.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-148 (-40.22 % of base) : 6403.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 (Tier0)
-296 (-39.78 % of base) : 1966.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)
-92 (-39.66 % of base) : 5410.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):System.__Canon (Tier0)
-92 (-39.66 % of base) : 13180.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier0)
-92 (-39.66 % of base) : 8239.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] (Tier0)
-92 (-39.66 % of base) : 6544.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] (Tier0)
-92 (-38.98 % of base) : 4874.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int] (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: 985512 (overridden on cmd)
Total bytes of diff: 978016 (overridden on cmd)
Total bytes of delta: -7496 (-0.76 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
68 : 6374.dasm (8.99 % of base)
64 : 4667.dasm (5.39 % of base)
64 : 8778.dasm (11.76 % of base)
48 : 6701.dasm (16.67 % of base)
24 : 2788.dasm (6.59 % of base)
24 : 5544.dasm (23.08 % of base)
24 : 6218.dasm (31.58 % of base)
24 : 8765.dasm (6.25 % of base)
20 : 5595.dasm (16.13 % of base)
20 : 69.dasm (6.25 % of base)
12 : 2791.dasm (1.01 % of base)
4 : 4134.dasm (3.45 % of base)
4 : 5592.dasm (3.03 % of base)
4 : 8210.dasm (1.89 % of base)
Top file improvements (bytes):
-384 : 8711.dasm (-25.26 % of base)
-328 : 2954.dasm (-23.98 % of base)
-328 : 1003.dasm (-22.47 % of base)
-228 : 2873.dasm (-7.52 % of base)
-212 : 3313.dasm (-12.62 % of base)
-212 : 13.dasm (-33.12 % of base)
-212 : 10.dasm (-30.99 % of base)
-200 : 2961.dasm (-19.69 % of base)
-188 : 11905.dasm (-21.96 % of base)
-184 : 479.dasm (-24.34 % of base)
-184 : 67.dasm (-26.14 % of base)
-176 : 3205.dasm (-27.85 % of base)
-160 : 760.dasm (-17.62 % of base)
-136 : 2165.dasm (-30.63 % of base)
-136 : 6211.dasm (-18.68 % of base)
-132 : 510.dasm (-19.76 % of base)
-128 : 492.dasm (-18.71 % of base)
-128 : 861.dasm (-27.12 % of base)
-100 : 2100.dasm (-24.04 % of base)
-100 : 632.dasm (-21.93 % of base)
61 total files with Code Size differences (47 improved, 14 regressed), 22 unchanged.
Top method regressions (bytes):
68 (8.99 % of base) : 6374.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) : 8778.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) : 4667.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) : 6701.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
24 (6.25 % of base) : 8765.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) : 5544.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) : 6218.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) : 2788.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) : 5595.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)
12 (1.01 % of base) : 2791.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
4 (1.89 % of base) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.03 % of base) : 5592.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) : 4134.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)
Top method improvements (bytes):
-384 (-25.26 % of base) : 8711.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) : 1003.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) : 2954.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 (-7.52 % of base) : 2873.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-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) : 2961.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)
-188 (-21.96 % of base) : 11905.dasm - System.Linq.Enumerable:TryGetLast[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],byref):System.ValueTuple`2[System.__Canon,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) : 3205.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-160 (-17.62 % of base) : 760.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)
-136 (-18.68 % of base) : 6211.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) : 2165.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) : 861.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)
-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)
Top method regressions (percentages):
24 (31.58 % of base) : 6218.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) : 5544.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) : 6701.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) : 5595.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) : 8778.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
68 (8.99 % of base) : 6374.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) : 2788.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) : 8765.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) : 4667.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) : 4134.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.03 % of base) : 5592.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) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
12 (1.01 % of base) : 2791.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):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) : 2341.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) : 2165.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-72 (-30.51 % of base) : 6068.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-72 (-28.12 % of base) : 8314.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (FullOpts)
-176 (-27.85 % of base) : 3205.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-128 (-27.12 % of base) : 861.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) : 2235.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) : 5565.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) : 3065.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) : 8711.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) : 3043.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) : 4718.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) : 2269.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 linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1677192 (overridden on cmd)
Total bytes of diff: 1660080 (overridden on cmd)
Total bytes of delta: -17112 (-1.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
124 : 6787.dasm (12.55 % of base)
48 : 6459.dasm (10.81 % of base)
48 : 6462.dasm (10.62 % of base)
48 : 6438.dasm (10.62 % of base)
48 : 6449.dasm (10.62 % of base)
20 : 9493.dasm (13.51 % of base)
20 : 15692.dasm (6.10 % of base)
16 : 6386.dasm (8.51 % of base)
8 : 10825.dasm (3.03 % of base)
8 : 11098.dasm (5.88 % of base)
8 : 2653.dasm (4.26 % of base)
4 : 2885.dasm (1.59 % of base)
4 : 12492.dasm (5.56 % of base)
4 : 5276.dasm (0.98 % of base)
Top file improvements (bytes):
-328 : 10146.dasm (-29.29 % of base)
-328 : 3828.dasm (-24.33 % of base)
-228 : 9429.dasm (-28.22 % of base)
-212 : 252.dasm (-30.99 % of base)
-212 : 821.dasm (-33.12 % of base)
-208 : 8100.dasm (-23.42 % of base)
-208 : 6622.dasm (-23.01 % of base)
-200 : 5703.dasm (-11.79 % of base)
-188 : 13117.dasm (-23.86 % of base)
-184 : 256.dasm (-24.34 % of base)
-184 : 744.dasm (-26.14 % of base)
-172 : 10145.dasm (-18.53 % of base)
-172 : 8812.dasm (-22.63 % of base)
-172 : 5805.dasm (-28.48 % of base)
-164 : 5500.dasm (-22.04 % of base)
-160 : 14259.dasm (-17.62 % of base)
-152 : 10147.dasm (-14.02 % of base)
-144 : 6582.dasm (-20.81 % of base)
-144 : 7954.dasm (-24.32 % of base)
-144 : 6782.dasm (-21.95 % of base)
69 total files with Code Size differences (55 improved, 14 regressed), 19 unchanged.
Top method regressions (bytes):
124 (12.55 % of base) : 6787.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) : 6459.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) : 6462.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) : 6449.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) : 6438.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) : 9493.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) : 15692.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) : 6386.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) : 10825.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) : 2653.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) : 11098.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) : 5276.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) : 2885.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) : 12492.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
Top method improvements (bytes):
-328 (-29.29 % of base) : 10146.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) : 3828.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) : 9429.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) : 821.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-23.01 % of base) : 6622.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) : 8100.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) : 5703.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) : 13117.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) : 8812.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) : 10145.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) : 5805.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) : 5500.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) : 14259.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) : 10147.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 (-24.32 % of base) : 7954.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) : 6582.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 (-21.95 % of base) : 6782.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) : 9493.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) : 6787.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) : 6459.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) : 6462.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) : 6449.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) : 6438.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) : 6386.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) : 15692.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) : 11098.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) : 12492.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
8 (4.26 % of base) : 2653.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) : 10825.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) : 2885.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) : 5276.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) : 9063.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) : 821.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-60 (-32.61 % of base) : 10829.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 11339.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) : 8039.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) : 5294.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) : 5543.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) : 6217.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) : 10351.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) : 10146.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) : 5805.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) : 9525.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) : 9429.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) : 5286.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) : 5801.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 9969.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) : 5166.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) : 10822.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) : 5541.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 92,598 contexts (38,516 MinOpts, 54,082 FullOpts).
MISSED contexts: base: 3,640 (2.59%), diff: 43,898 (31.25%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.x64.checked.mch | 721,868 | -4,586 |
benchmarks.run_pgo.linux.x64.checked.mch | 2,059,337 | -15,319 |
benchmarks.run_tiered.linux.x64.checked.mch | 2,163,412 | -15,133 |
coreclr_tests.run.linux.x64.checked.mch | 407,681 | +64 |
libraries.pmi.linux.x64.checked.mch | 737,374 | -20,077 |
libraries_tests.run.linux.x64.Release.mch | 1,447,569 | -21,187 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 830,863 | -6,770 |
realworld.run.linux.x64.checked.mch | 1,403,564 | -13,465 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.linux.x64.checked.mch | 1,526,742 | -13,499 |
benchmarks.run_tiered.linux.x64.checked.mch | 1,965,819 | -14,023 |
coreclr_tests.run.linux.x64.checked.mch | 303,333 | -6 |
libraries_tests.run.linux.x64.Release.mch | 1,348,426 | -19,449 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.x64.checked.mch | 704,368 | -4,586 |
benchmarks.run_pgo.linux.x64.checked.mch | 532,595 | -1,820 |
benchmarks.run_tiered.linux.x64.checked.mch | 197,593 | -1,110 |
coreclr_tests.run.linux.x64.checked.mch | 104,348 | +70 |
libraries.pmi.linux.x64.checked.mch | 737,374 | -20,077 |
libraries_tests.run.linux.x64.Release.mch | 99,143 | -1,738 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 830,863 | -6,770 |
realworld.run.linux.x64.checked.mch | 1,401,962 | -13,465 |
1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span
1System.__Canon@@ -2,67 +2,50 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rbx single-def
-; V02 arg1 [V02,T03] ( 3, 3 ) int -> r15 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rbx single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> r15 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-DEP
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-DEP-; V08 tmp5 [V08,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M5478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; byrRegs +[rbx]
mov r15d, edx- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x18]
- test rax, rax
- je SHORT G_M5478_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M5478_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, rax
- jmp SHORT G_M5478_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M5478_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M5478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rsi, rbx
; byrRegs +[rsi]
mov edx, r15d- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M5478_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M5478_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon]]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,12 +53,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable
1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]],byref):ubyte (FullOpts)@@ -2,66 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-; V02 arg1 [V02,T03] ( 3, 3 ) byref -> r15 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
+; V02 arg1 [V02,T02] ( 3, 3 ) byref -> r15 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M23653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; byrRegs +[r15]- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M23653_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M23653_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M23653_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rdi, rax
- jmp SHORT G_M23653_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M23653_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M23653_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M23653_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref mov rsi, rbx
; gcrRegs +[rsi]
mov rdx, r15
; byrRegs +[rdx]- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M23653_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M23653_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=b0b1a39a) for method 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)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=b0b1a39a) for method 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) ; ============================================================
Unwind Info:
@@ -69,12 +52,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -2,68 +2,51 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.IO.Stream>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.IO.Stream>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M64815_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M64815_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M64815_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M64815_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, rax
- jmp SHORT G_M64815_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M64815_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M64815_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M64815_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, rbx
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]
xor rcx, rcx
; gcrRegs +[rcx]- ;; size=8 bbWeight=1 PerfScore 0.75
-G_M64815_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=26 bbWeight=1 PerfScore 2.25
+G_M64815_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [<unknown method>]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 81, prolog size 23, PerfScore 17.10, instruction count 25, allocated bytes for code 81 (MethodHash=131902d0) for method ProtoBuf.Serializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)+; Total bytes of code 53, prolog size 14, PerfScore 10.00, instruction count 16, allocated bytes for code 53 (MethodHash=131902d0) for method ProtoBuf.Serializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts) ; ============================================================
Unwind Info:
@@ -71,12 +54,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
1[System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon]]:CalculateCapacity(int,float):int (FullOpts)@@ -9,10 +9,12 @@
;
;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def
; V01 arg0 [V01,T02] ( 3, 3 ) int -> rsi single-def-; V02 arg1 [V02,T03] ( 3, 3 ) float -> mm0 single-def+; V02 arg1 [V02,T05] ( 3, 3 ) float -> mm0 single-def ; V03 loc0 [V03,T01] ( 3, 6 ) int -> rax single-def
; V04 loc1 [V04,T00] ( 6, 15 ) int -> rcx
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"+; V06 tmp1 [V06,T03] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable"
+; V07 tmp2 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -25,13 +27,17 @@ G_M1485_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vxorps xmm1, xmm1, xmm1
vcvtsi2ss xmm1, xmm1, esi
vdivss xmm0, xmm1, xmm0- vcvtss2sd xmm0, xmm0, xmm0
- call CORINFO_HELP_DBL2INT_OVF
- ; gcr arg pop 0+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32]
+ vcvttss2si eax, xmm0
+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 mov ecx, 1
cmp eax, 1
jle SHORT G_M1485_IG04- ;; size=31 bbWeight=1 PerfScore 22.83+ ;; size=71 bbWeight=1 PerfScore 38.33 G_M1485_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add ecx, ecx
cmp ecx, eax
@@ -46,8 +52,12 @@ G_M1485_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 4F0000004F000000h, 4F0000004F000000h
+RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh -; Total bytes of code 57, prolog size 7, PerfScore 33.33, instruction count 19, allocated bytes for code 57 (MethodHash=007ffa32) for method Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)+
+; Total bytes of code 97, prolog size 7, PerfScore 48.83, instruction count 24, allocated bytes for code 97 (MethodHash=007ffa32) for method Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts) ; ============================================================
Unwind Info:
@@ -12,6 +12,8 @@
; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [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 = 0
@@ -35,16 +37,26 @@ G_M53658_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, 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=45 bbWeight=1 PerfScore 32.92+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1
+ ;; size=90 bbWeight=1 PerfScore 47.42 G_M53658_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbx
ret
;; size=2 bbWeight=1 PerfScore 1.50
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 53, prolog size 4, PerfScore 36.67, instruction count 15, allocated bytes for code 53 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)+; Total bytes of code 98, prolog size 4, PerfScore 51.17, instruction count 21, allocated bytes for code 98 (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
@@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
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 rax, xmm0- ;; size=25 bbWeight=1 PerfScore 17.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=71 bbWeight=1 PerfScore 32.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
RWD00 dq 3F847AE147AE147Bh ; 0.01+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (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], rdi
mov qword ptr [rbp-0x10], rdi
;; 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-0x18], 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 rdi, qword ptr [rbp-0x10]
mov rsi, 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_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18]
xor rsi, rsi
; gcrRegs +[rsi]
@@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
nop - ;; size=15 bbWeight=1 PerfScore 4.75
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=38 bbWeight=1 PerfScore 8.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 95, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 95 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 62, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 62 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic
1ubyte@@ -20,40 +20,25 @@ G_M15908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x10], rdi
mov gword ptr [rbp-0x18], rsi
;; size=22 bbWeight=1 PerfScore 4.75-G_M15908_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_M15908_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M15908_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-0x20], rax
- jmp SHORT G_M15908_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M15908_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x10]
mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x20], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M15908_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x20]
mov rsi, gword ptr [rbp-0x18]
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
nop - ;; size=15 bbWeight=1 PerfScore 5.25
-G_M15908_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=38 bbWeight=1 PerfScore 8.50
+G_M15908_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 99, prolog size 14, PerfScore 25.80, instruction count 26, allocated bytes for code 99 (MethodHash=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)+; Total bytes of code 66, prolog size 14, PerfScore 15.00, instruction count 17, allocated bytes for code 66 (MethodHash=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0) ; ============================================================
Unwind Info:
1[System.__Canon]:CreateCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic
1ubyte@@ -20,40 +20,25 @@ G_M42409_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x10], rdi
mov gword ptr [rbp-0x18], rsi
;; size=22 bbWeight=1 PerfScore 4.75-G_M42409_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_M42409_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M42409_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-0x20], rax
- jmp SHORT G_M42409_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M42409_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M42409_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x10]
mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x20], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M42409_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x20]
mov rsi, gword ptr [rbp-0x18]
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
nop - ;; size=15 bbWeight=1 PerfScore 5.25
-G_M42409_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=38 bbWeight=1 PerfScore 8.50
+G_M42409_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 99, prolog size 14, PerfScore 25.80, instruction count 26, allocated bytes for code 99 (MethodHash=8f1b5a56) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Instrumented Tier0)+; Total bytes of code 66, prolog size 14, PerfScore 15.00, instruction count 17, allocated bytes for code 66 (MethodHash=8f1b5a56) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -9,90 +9,83 @@
; 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 -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.20) long -> rsi single-def
-; V02 arg1 [V02,T01] ( 4, 3.17) byref -> rbx single-def+; V00 this [V00,T02] ( 3, 2.17) ref -> r14 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.34) long -> rbx single-def
+; V02 arg1 [V02,T01] ( 4, 3.17) byref -> r15 single-def ; V03 loc0 [V03,T03] ( 7, 3.68) 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.37) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.37) ref -> r13 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 -> rdi "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 0.96) long -> rdi "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
push rbp
push r15
push r14+ push r13 push rbx- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsi
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rdx
- ; byrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 16
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x28], rsi
+ mov r14, rdi
+ ; gcrRegs +[r14]
+ mov rbx, rsi
+ mov r15, rdx
+ ; byrRegs +[r15]
+ ;; size=30 bbWeight=1 PerfScore 7.50
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ mov rax, gword ptr [r15] ; 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.17, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=0.17, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref ; gcrRegs -[rax]- mov rdi, qword ptr [rsi+0x38]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- je SHORT G_M58319_IG05
- ;; size=13 bbWeight=0.17 PerfScore 0.90
-G_M58319_IG04: ; bbWeight=0.14, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.14 PerfScore 0.27
-G_M58319_IG05: ; bbWeight=0.03, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- mov rdi, rsi
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- ;; size=21 bbWeight=0.03 PerfScore 0.06
-G_M58319_IG06: ; bbWeight=0.17, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
- ; byrRegs +[rdi]
- mov rsi, r15
- ; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi r15]
- ; byrRegs -[rdi] mov rdi, rbx+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, rax
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ lea rdi, bword ptr [r13+0x10] ; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rsi r14]
+ ; byrRegs -[rdi]
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, r15
+ ; byrRegs +[rdi]
+ mov rsi, r13
+ ; gcrRegs +[rsi] xor rdx, rdx
; gcrRegs +[rdx]
call <unknown method>
; gcrRegs -[rdx rsi] +[rax]- ; byrRegs -[rbx rdi]+ ; byrRegs -[rdi r15] test rax, rax- cmove rax, r14
- ;; size=40 bbWeight=0.17 PerfScore 0.90
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r14]
- add rsp, 8+ cmove rax, r13
+ ;; size=79 bbWeight=0.17 PerfScore 1.45
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r13]
+ add rsp, 16 pop rbx+ pop r13 pop r14
pop r15
pop rbp
ret - ;; size=11 bbWeight=1 PerfScore 3.25+ ;; size=13 bbWeight=1 PerfScore 3.75 -; Total bytes of code 117, prolog size 16, PerfScore 15.63, instruction count 38, allocated bytes for code 117 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 130, prolog size 21, PerfScore 15.95, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -100,13 +93,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -9,90 +9,83 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 3, 2.18) ref -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.21) long -> rsi single-def
-; V02 arg1 [V02,T01] ( 4, 3.18) byref -> rbx single-def+; V00 this [V00,T02] ( 3, 2.18) ref -> r14 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 3.36) long -> rbx single-def
+; V02 arg1 [V02,T01] ( 4, 3.18) byref -> r15 single-def ; V03 loc0 [V03,T03] ( 7, 3.71) 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 1.43) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.43) ref -> r13 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.71) long -> rdi "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1 ) long -> rdi "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
push rbp
push r15
push r14+ push r13 push rbx- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsi
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rdx
- ; byrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 16
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x28], rsi
+ mov r14, rdi
+ ; gcrRegs +[r14]
+ mov rbx, rsi
+ mov r15, rdx
+ ; byrRegs +[r15]
+ ;; size=30 bbWeight=1 PerfScore 7.50
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ mov rax, gword ptr [r15] ; 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.18, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref ; gcrRegs -[rax]- mov rdi, qword ptr [rsi+0x38]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- je SHORT G_M58319_IG05
- ;; size=13 bbWeight=0.18 PerfScore 0.94
-G_M58319_IG04: ; bbWeight=0.14, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.14 PerfScore 0.29
-G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- mov rdi, rsi
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- ;; size=21 bbWeight=0.04 PerfScore 0.06
-G_M58319_IG06: ; bbWeight=0.18, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
- ; byrRegs +[rdi]
- mov rsi, r15
- ; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi r15]
- ; byrRegs -[rdi] mov rdi, rbx+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, rax
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ lea rdi, bword ptr [r13+0x10] ; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rsi r14]
+ ; byrRegs -[rdi]
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, r15
+ ; byrRegs +[rdi]
+ mov rsi, r13
+ ; gcrRegs +[rsi] xor rdx, rdx
; gcrRegs +[rdx]
call <unknown method>
; gcrRegs -[rdx rsi] +[rax]- ; byrRegs -[rbx rdi]+ ; byrRegs -[rdi r15] test rax, rax- cmove rax, r14
- ;; size=40 bbWeight=0.18 PerfScore 0.94
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r14]
- add rsp, 8+ cmove rax, r13
+ ;; size=79 bbWeight=0.18 PerfScore 1.52
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r13]
+ add rsp, 16 pop rbx+ pop r13 pop r14
pop r15
pop rbp
ret - ;; size=11 bbWeight=1 PerfScore 3.25+ ;; size=13 bbWeight=1 PerfScore 3.75 -; Total bytes of code 117, prolog size 16, PerfScore 15.72, instruction count 38, allocated bytes for code 117 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 130, prolog size 21, PerfScore 16.02, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -100,13 +93,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -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
@@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
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 rax, xmm0- ;; size=25 bbWeight=1 PerfScore 17.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=71 bbWeight=1 PerfScore 32.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
RWD00 dq 3F847AE147AE147Bh ; 0.01+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1) ; ============================================================
Unwind Info:
1+Arrays[System.__Canon],System.__Canon](byref,int):System.Span
1System.__Canon@@ -2,67 +2,50 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rbx single-def
-; V02 arg1 [V02,T03] ( 3, 3 ) int -> r15 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rbx single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> r15 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-DEP
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-DEP-; V08 tmp5 [V08,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M18096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; byrRegs +[rbx]
mov r15d, edx- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M18096_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x18]
- test rax, rax
- je SHORT G_M18096_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M18096_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, rax
- jmp SHORT G_M18096_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M18096_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M18096_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M18096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rsi, rbx
; byrRegs +[rsi]
mov edx, r15d- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M18096_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M18096_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon]]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=2b69b94f) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (Tier1)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=2b69b94f) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (Tier1) ; ============================================================
Unwind Info:
@@ -70,12 +53,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rdi
mov qword ptr [rbp-0x10], rdi
;; 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-0x18], 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 rdi, qword ptr [rbp-0x10]
mov rsi, 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_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18]
xor rsi, rsi
; gcrRegs +[rsi]
@@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
nop - ;; size=15 bbWeight=1 PerfScore 4.75
-G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=38 bbWeight=1 PerfScore 8.00
+G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 95, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 95 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)+; Total bytes of code 62, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 62 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0) ; ============================================================
Unwind Info:
@@ -2,68 +2,51 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M59306_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M59306_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M59306_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M59306_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, rax
- jmp SHORT G_M59306_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M59306_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M59306_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M59306_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, rbx
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]
xor rcx, rcx
; gcrRegs +[rcx]- ;; size=8 bbWeight=1 PerfScore 0.75
-G_M59306_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=26 bbWeight=1 PerfScore 2.25
+G_M59306_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [System.Linq.Enumerable:Intersect[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon]]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 81, prolog size 23, PerfScore 17.10, instruction count 25, allocated bytes for code 81 (MethodHash=1f031855) for method System.Linq.Enumerable:Intersect[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)+; Total bytes of code 53, prolog size 14, PerfScore 10.00, instruction count 16, allocated bytes for code 53 (MethodHash=1f031855) for method System.Linq.Enumerable:Intersect[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1) ; ============================================================
Unwind Info:
@@ -71,12 +54,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -51,7 +51,7 @@ G_M12439_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
;; size=13 bbWeight=0.50 PerfScore 1.12
G_M12439_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; GuardedDevirtualization.TwoClassVirtual+TestInput- call CORINFO_HELP_NEWSFAST+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[rax]
mov r15, rax
; gcrRegs +[r15]
@@ -8,90 +8,83 @@
; 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 -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> rsi single-def
-; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rbx single-def+; V00 this [V00,T03] ( 3, 2.50) ref -> r14 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 -> r15 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> r13 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 -> rdi "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 2.80) long -> rdi "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
push rbp
push r15
push r14+ push r13 push rbx- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsi
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rdx
- ; byrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 16
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x28], rsi
+ mov r14, rdi
+ ; gcrRegs +[r14]
+ mov rbx, rsi
+ mov r15, rdx
+ ; byrRegs +[r15]
+ ;; size=30 bbWeight=1 PerfScore 7.50
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ mov rax, gword ptr [r15] ; 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=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref ; gcrRegs -[rax]- mov rdi, qword ptr [rsi+0x38]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- je SHORT G_M58319_IG05
- ;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=8000 {r15}, 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=8000 {r15}, byrefRegs=0008 {rbx}, byref
- mov rdi, rsi
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- ;; size=21 bbWeight=0.10 PerfScore 0.18
-G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
- ; byrRegs +[rdi]
- mov rsi, r15
- ; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi r15]
- ; byrRegs -[rdi] mov rdi, rbx+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, rax
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ lea rdi, bword ptr [r13+0x10] ; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rsi r14]
+ ; byrRegs -[rdi]
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, r15
+ ; byrRegs +[rdi]
+ mov rsi, r13
+ ; gcrRegs +[rsi] xor rdx, rdx
; gcrRegs +[rdx]
call <unknown method>
; gcrRegs -[rdx rsi] +[rax]- ; byrRegs -[rbx rdi]+ ; byrRegs -[rdi r15] test rax, rax- cmove rax, r14
- ;; size=40 bbWeight=0.50 PerfScore 2.62
-G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r14]
- add rsp, 8+ cmove rax, r13
+ ;; size=79 bbWeight=0.50 PerfScore 4.25
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r13]
+ add rsp, 16 pop rbx+ pop r13 pop r14
pop r15
pop rbp
ret - ;; size=11 bbWeight=1 PerfScore 3.25+ ;; size=13 bbWeight=1 PerfScore 3.75 -; Total bytes of code 117, prolog size 16, PerfScore 19.73, instruction count 38, allocated bytes for code 117 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 130, prolog size 21, PerfScore 18.75, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -99,13 +92,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -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
@@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
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 rax, xmm0- ;; size=25 bbWeight=1 PerfScore 17.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=71 bbWeight=1 PerfScore 32.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
RWD00 dq 3F847AE147AE147Bh ; 0.01+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1) ; ============================================================
Unwind Info:
@@ -2,78 +2,56 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Instrumented Tier1 code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T04] ( 3, 3 ) byref -> r14 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T03] ( 3, 3 ) byref -> r14 single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 tmp2 [V06,T07] ( 2, 4 ) long -> rdi "argument with side effect"
-; V07 rat0 [V07,T06] ( 3, 4 ) long -> rdi "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> rsi "spilling expr"
-; V09 rat2 [V09,T05] ( 3, 4.48) long -> rax "fgMakeTemp is creating a new local variable"+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 8+; Lcl frame size = 16
G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push r14
push rbx- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rdi mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
mov r14, rcx
; byrRegs +[r14]- ;; size=25 bbWeight=1 PerfScore 7.25
-G_M252_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- cmp qword ptr [rsi+0x10], 32
- jle SHORT G_M252_IG05
- ;; size=11 bbWeight=1 PerfScore 6.00
-G_M252_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz
- mov rax, qword ptr [rsi+0x20]
- test rax, rax
- je SHORT G_M252_IG05
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M252_IG04: ; bbWeight=0.64, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz
- mov rdi, rax
- jmp SHORT G_M252_IG06
- ;; size=5 bbWeight=0.64 PerfScore 1.44
-G_M252_IG05: ; bbWeight=0.36, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref+ ;; size=23 bbWeight=1 PerfScore 5.00
+G_M252_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.36 PerfScore 0.54
-G_M252_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref mov rsi, rbx
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]
mov rcx, r14
; byrRegs +[rcx]- ;; size=9 bbWeight=1 PerfScore 0.75
-G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8+ ;; size=27 bbWeight=1 PerfScore 2.25
+G_M252_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16 pop rbx
pop r14
pop r15- pop rbp tail.jmp [<unknown method>]
; gcr arg pop 0- ;; size=16 bbWeight=1 PerfScore 4.25+ ;; size=15 bbWeight=1 PerfScore 3.75 -; Total bytes of code 93, prolog size 25, PerfScore 22.83, instruction count 30, allocated bytes for code 93 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)+; Total bytes of code 65, prolog size 23, PerfScore 11.00, instruction count 19, allocated bytes for code 65 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -81,13 +59,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x09
+ CountOfUnwindCodes: 4 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -23,26 +23,11 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov gword ptr [rbp-0x18], rsi
mov gword ptr [rbp-0x20], rdx
;; size=26 bbWeight=1 PerfScore 5.75-G_M305_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_M305_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M305_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-0x30], rax
- jmp SHORT G_M305_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x10]
mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY mov qword ptr [rbp-0x30], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea rcx, [rbp-0x28]
mov rdi, qword ptr [rbp-0x30]
mov rsi, gword ptr [rbp-0x18]
@@ -52,14 +37,14 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx rsi] +[rax]
nop - ;; size=23 bbWeight=1 PerfScore 6.75
-G_M305_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=46 bbWeight=1 PerfScore 10.00
+G_M305_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 14, PerfScore 28.30, instruction count 29, allocated bytes for code 111 (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 78, prolog size 14, PerfScore 17.50, instruction count 20, allocated bytes for code 78 (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:
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)@@ -33,7 +33,7 @@ G_M60442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov bword ptr [rbp-0x30], r8
mov gword ptr [rbp-0x38], r9
;; size=43 bbWeight=1 PerfScore 10.00-G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
call [<unknown method>]
@@ -41,26 +41,11 @@ G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[rax]
mov bword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rdx- mov rax, qword ptr [rbp-0x18]
- ; byrRegs -[rax]
- mov rax, qword ptr [rax+0x38]
- cmp qword ptr [rax+0x10], 0
- je SHORT G_M60442_IG04
- ;; size=33 bbWeight=1 PerfScore 13.00
-G_M60442_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-0x50], rax
- jmp SHORT G_M60442_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M60442_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18]
mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY
+ ; byrRegs -[rax] mov qword ptr [rbp-0x50], rax- ;; size=23 bbWeight=0.20 PerfScore 0.65
-G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, bword ptr [rbp-0x30]
; byrRegs +[rax]
mov bword ptr [rsp], rax
@@ -87,14 +72,14 @@ G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
nop - ;; size=65 bbWeight=1 PerfScore 17.50
-G_M60442_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=106 bbWeight=1 PerfScore 26.75
+G_M60442_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 112
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 188, prolog size 20, PerfScore 49.30, instruction count 49, allocated bytes for code 188 (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 155, prolog size 20, PerfScore 38.50, instruction count 40, allocated bytes for code 155 (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:
@@ -8,7 +8,7 @@
; V00 arg0 [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] class-hnd <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02 ] ( 1, 1 ) struct (16) [rbp-0x18] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>-; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [rbp-0x30] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Decimal]>+; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [rbp-0x30] do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Decimal]> ;
; Lcl frame size = 80
@@ -20,13 +20,18 @@ G_M43438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov gword ptr [rbp-0x08], rdi
;; size=17 bbWeight=1 PerfScore 3.75
G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- lea rdi, [rbp-0x30]
- mov rdx, gword ptr [rbp-0x08]
- ; gcrRegs +[rdx]
- mov rsi, 0xD1FFAB1E ; System.Nullable`1[System.Decimal]
- call CORINFO_HELP_UNBOX_NULLABLE
- ; gcrRegs -[rdx]+ mov rsi, gword ptr [rbp-0x08]
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Nullable`1[System.Decimal]
+ call CORINFO_HELP_UNBOX
+ ; gcrRegs -[rsi]
+ ; byrRegs +[rax]
+ vmovdqu xmm0, xmmword ptr [rax]
+ vmovdqu xmmword ptr [rbp-0x30], xmm0
+ mov rcx, qword ptr [rax+0x10]
+ mov qword ptr [rbp-0x20], rcx mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>+ ; byrRegs -[rax] mov rdi, qword ptr [rax]
mov rax, 0xD1FFAB1E ; static handle
mov rsi, qword ptr [rax+0x08]
@@ -41,14 +46,14 @@ G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, qword ptr [rbp-0x10]
call [<unknown method>]
nop - ;; size=98 bbWeight=1 PerfScore 23.50+ ;; size=111 bbWeight=1 PerfScore 31.00 G_M43438_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 121, prolog size 13, PerfScore 29.00, instruction count 27, allocated bytes for code 121 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)+; Total bytes of code 134, prolog size 13, PerfScore 36.50, instruction count 30, allocated bytes for code 134 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (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
@@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
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 rax, xmm0- ;; size=25 bbWeight=1 PerfScore 17.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=71 bbWeight=1 PerfScore 32.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
RWD00 dq 3F847AE147AE147Bh ; 0.01+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (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
@@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
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 rax, xmm0- ;; size=25 bbWeight=1 PerfScore 17.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=71 bbWeight=1 PerfScore 32.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
RWD00 dq 3F847AE147AE147Bh ; 0.01+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -2,51 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M17915_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M17915_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x10]
- test rsi, rsi
- je SHORT G_M17915_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M17915_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M17915_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M17915_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M17915_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M17915_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M17915_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp+ mov rdi, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M17915_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 tail.jmp [Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]]
; gcr arg pop 0- ;; size=11 bbWeight=1 PerfScore 2.75+ ;; size=10 bbWeight=1 PerfScore 2.25 -; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=ff13ba04) for method Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=ff13ba04) for method Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -54,10 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
@@ -2,51 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M25175_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x10]
- test rsi, rsi
- 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+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M25175_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M25175_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp+ mov rdi, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M25175_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 tail.jmp [Microsoft.FSharp.Core.LanguagePrimitives:GenericOneDynamic[System.__Canon]():System.__Canon]
; gcr arg pop 0- ;; size=11 bbWeight=1 PerfScore 2.75+ ;; size=10 bbWeight=1 PerfScore 2.25 -; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -54,10 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
@@ -2,51 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x10]
- test rsi, rsi
- 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+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp+ mov rdi, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 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=11 bbWeight=1 PerfScore 2.75+ ;; size=10 bbWeight=1 PerfScore 2.25 -; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -54,10 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
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 -> rdi single-def "V01.[000..008)"-;* V09 cse0 [V09,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-; V10 cse1 [V10,T06] ( 4, 3 ) int -> rsi "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,T00] ( 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 -> rsi "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,T00] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 24
@@ -51,13 +53,19 @@ G_M41213_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, 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, esi
jle SHORT G_M41213_IG04
call [System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this]
; gcrRegs -[rdi]- ;; 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]
@@ -69,9 +77,13 @@ G_M41213_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.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 87, prolog size 18, PerfScore 30.04, instruction count 27, allocated bytes for code 87 (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 132, prolog size 18, PerfScore 37.29, instruction count 33, allocated bytes for code 132 (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[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 -> rdi single-def "V01.[000..008)"-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rsi "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 -> rsi "CSE - aggressive" ;
; Lcl frame size = 16
@@ -40,13 +42,19 @@ G_M53962_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, 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, esi
jle SHORT G_M53962_IG04
call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this]
; gcrRegs -[rdi]- ;; 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]
@@ -57,9 +65,13 @@ G_M53962_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 76, prolog size 13, PerfScore 24.29, instruction count 22, allocated bytes for code 76 (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 121, prolog size 13, PerfScore 31.54, instruction count 28, allocated bytes for code 121 (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:
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 -> rdi single-def "V01.[000..008)"-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rsi "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 -> rsi "CSE - aggressive" ;
; Lcl frame size = 16
@@ -40,13 +42,19 @@ G_M21751_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, 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, esi
jle SHORT G_M21751_IG04
call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this]
; gcrRegs -[rdi]- ;; 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]
@@ -57,9 +65,13 @@ G_M21751_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 76, prolog size 13, PerfScore 24.29, instruction count 22, allocated bytes for code 76 (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 121, prolog size 13, PerfScore 31.54, instruction count 28, allocated bytes for code 121 (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:
@@ -2,51 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x10]
- test rsi, rsi
- 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+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp+ mov rdi, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 tail.jmp [System.Array:Empty[System.__Canon]():System.__Canon[]]
; gcr arg pop 0- ;; size=11 bbWeight=1 PerfScore 2.75+ ;; size=10 bbWeight=1 PerfScore 2.25 -; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1) ; ============================================================
Unwind Info:
@@ -54,10 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0x08], rdi
mov qword ptr [rbp-0x10], rdi
;; 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-0x18], 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 rdi, qword ptr [rbp-0x10]
mov rsi, 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_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18]
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, 32
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], rdi
mov qword ptr [rbp-0x10], rdi
;; 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-0x18], 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 rdi, qword ptr [rbp-0x10]
mov rsi, 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_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, qword ptr [rbp-0x18]
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, 32
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] (Instrumented 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] (Instrumented Tier0) ; ============================================================
Unwind Info:
@@ -9,95 +9,83 @@
; 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 -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T02] ( 5, 4.36) long -> rsi single-def
-; V02 arg1 [V02,T03] ( 4, 4 ) byref -> rbx single-def+; V00 this [V00,T04] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T02] ( 5, 5.00) long -> rbx single-def
+; V02 arg1 [V02,T03] ( 4, 4 ) byref -> r15 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V06 tmp1 [V06,T00] ( 4, 8.00) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T00] ( 4, 8.00) ref -> r13 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,T07] ( 3, 4.00) long -> rdi "runtime lookup"
-; V10 rat1 [V10,T04] ( 3, 5.60) long -> rdi "spilling expr"
-; V11 rat2 [V11,T06] ( 3, 4.48) long -> rdi "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
push rbp
push r15
push r14+ push r13 push rbx- push rax
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsi
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rdx
- ; byrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rax, gword ptr [rbx]+ sub rsp, 16
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x28], rsi
+ mov r14, rdi
+ ; gcrRegs +[r14]
+ mov rbx, rsi
+ mov r15, rdx
+ ; byrRegs +[r15]
+ ;; size=30 bbWeight=1 PerfScore 7.50
+G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
+ mov rax, gword ptr [r15] ; gcrRegs +[rax]
test rax, rax- jne SHORT G_M58319_IG08+ jne SHORT G_M58319_IG04 ;; size=8 bbWeight=1 PerfScore 3.25-G_M58319_IG03: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz+G_M58319_IG03: ; bbWeight=1.00, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref ; gcrRegs -[rax]- mov rdi, qword ptr [rsi+0x38]
- cmp qword ptr [rdi+0x08], 24
- jle SHORT G_M58319_IG06
- ;; size=11 bbWeight=1.00 PerfScore 6.00
-G_M58319_IG04: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, qword ptr [rdi+0x18]
- test rdi, rdi
- je SHORT G_M58319_IG06
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M58319_IG05: ; bbWeight=0.64, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG07
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M58319_IG06: ; bbWeight=0.36, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- mov rdi, rsi
- mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M58319_IG07: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
- ; byrRegs +[rdi]
- mov rsi, r15
- ; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi r15]
- ; byrRegs -[rdi] mov rdi, rbx+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, rax
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ lea rdi, bword ptr [r13+0x10] ; byrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rsi r14]
+ ; byrRegs -[rdi]
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, r15
+ ; byrRegs +[rdi]
+ mov rsi, r13
+ ; gcrRegs +[rsi] xor rdx, rdx
; gcrRegs +[rdx]
call <unknown method>
; gcrRegs -[rdx rsi] +[rax]- ; byrRegs -[rbx rdi]+ ; byrRegs -[rdi r15] test rax, rax- cmove rax, r14
- ;; size=40 bbWeight=1.00 PerfScore 5.25
-G_M58319_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r14]
- add rsp, 8+ cmove rax, r13
+ ;; size=79 bbWeight=1.00 PerfScore 8.50
+G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r13]
+ add rsp, 16 pop rbx+ pop r13 pop r14
pop r15
pop rbp
ret - ;; size=11 bbWeight=1 PerfScore 3.25+ ;; size=13 bbWeight=1 PerfScore 3.75 -; Total bytes of code 124, prolog size 16, PerfScore 29.26, instruction count 40, allocated bytes for code 124 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)+; Total bytes of code 130, prolog size 21, PerfScore 23.00, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1) ; ============================================================
Unwind Info:
@@ -105,13 +93,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -13,19 +13,20 @@
; V01 arg1 [V01,T00] ( 13, 5.37) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T01] ( 7, 4.25) ref -> r15 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V04 tmp1 [V04,T06] ( 3, 0.50) int -> rax "guarded devirt return temp"+; V04 tmp1 [V04,T07] ( 3, 0.50) int -> rax "guarded devirt return temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V09 tmp6 [V09,T05] ( 5, 0.93) ref -> r15 class-hnd exact "Inline stloc first use temp" <System.String>
-; V10 tmp7 [V10,T03] ( 2, 1 ) byref -> rdi single-def "impAppendStmt"
-; V11 tmp8 [V11,T04] ( 2, 1 ) int -> rax "Single return block return value"
-; V12 cse0 [V12,T07] ( 3, 0.49) int -> r14 "CSE - conservative"+; V08 tmp5 [V08,T06] ( 4, 0.87) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V09 tmp6 [V09,T04] ( 2, 1 ) byref -> rdi single-def "impAppendStmt"
+; V10 tmp7 [V10,T05] ( 2, 1 ) int -> rax "Single return block return value"
+; V11 cse0 [V11,T09] ( 3, 0.49) int -> r14 "CSE - conservative"
+; V12 rat0 [V12,T03] ( 5, 1.88) ref -> r15 "replacement local"
+; V13 rat1 [V13,T08] ( 2, 0.50) long -> rdi "CSE for expectedClsNode" ;
; Lcl frame size = 8
-G_M51920_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M51920_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
push r15
push r14
@@ -52,7 +53,7 @@ G_M51920_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
;; size=31 bbWeight=1 PerfScore 4.75
G_M51920_IG03: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [r14+0x08], rbx- je G_M51920_IG15+ je G_M51920_IG16 cmp rbx, r15
jne SHORT G_M51920_IG06
;; size=15 bbWeight=1 PerfScore 5.25
@@ -71,33 +72,27 @@ G_M51920_IG05: ; bbWeight=0.75, epilog, nogc, extend
G_M51920_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15]
cmp gword ptr [r14+0x20], 0- jne G_M51920_IG17+ jne G_M51920_IG18 test rbx, rbx- je G_M51920_IG15+ je G_M51920_IG16 mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rbx], rdi- jne SHORT G_M51920_IG13+ jne SHORT G_M51920_IG14 test r15, r15- jne SHORT G_M51920_IG08+ jne SHORT G_M51920_IG12 ;; size=40 bbWeight=0.25 PerfScore 2.69-G_M51920_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r14-r15]
- xor eax, eax
- jmp SHORT G_M51920_IG11
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M51920_IG08: ; bbWeight=0.06, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
- mov rdi, 0xD1FFAB1E ; System.String
- cmp qword ptr [r15], rdi
- jne SHORT G_M51920_IG07
- ;; size=15 bbWeight=0.06 PerfScore 0.25
-G_M51920_IG09: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz+G_M51920_IG07: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ test r15, r15
+ je G_M51920_IG20
+ ;; size=9 bbWeight=0.25 PerfScore 0.31
+G_M51920_IG08: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov edi, dword ptr [rbx+0x08]
mov r14d, dword ptr [r15+0x08]
cmp edi, r14d- jne SHORT G_M51920_IG07
- ;; size=12 bbWeight=0.12 PerfScore 0.63
-G_M51920_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref+ jne G_M51920_IG20
+ ;; size=16 bbWeight=0.12 PerfScore 0.63
+G_M51920_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov edi, 1
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
@@ -120,10 +115,10 @@ G_M51920_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; byrRegs -[rsi rdi]
; gcr arg pop 0
;; size=57 bbWeight=0.25 PerfScore 5.00-G_M51920_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M51920_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movzx rax, al
;; size=3 bbWeight=0.25 PerfScore 0.06-G_M51920_IG12: ; bbWeight=0.25, epilog, nogc, extend+G_M51920_IG11: ; bbWeight=0.25, epilog, nogc, extend add rsp, 8
pop rbx
pop r14
@@ -131,8 +126,19 @@ G_M51920_IG12: ; bbWeight=0.25, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.25 PerfScore 0.81-G_M51920_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref+G_M51920_IG12: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx r15]+ mov rdi, 0xD1FFAB1E ; System.String
+ cmp qword ptr [r15], rdi
+ je SHORT G_M51920_IG07
+ ;; size=15 bbWeight=0.12 PerfScore 0.53
+G_M51920_IG13: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ xor r15, r15
+ ; gcrRegs +[r15]
+ jmp SHORT G_M51920_IG07
+ ;; size=5 bbWeight=0.06 PerfScore 0.14
+G_M51920_IG14: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, r15
@@ -140,7 +146,7 @@ G_M51920_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x48]
;; size=13 bbWeight=0 PerfScore 0.00-G_M51920_IG14: ; bbWeight=0, epilog, nogc, extend+G_M51920_IG15: ; bbWeight=0, epilog, nogc, extend add rsp, 8
pop rbx
pop r14
@@ -148,11 +154,11 @@ G_M51920_IG14: ; bbWeight=0, epilog, nogc, extend
pop rbp
tail.jmp [rax+0x10]<unknown method>
;; size=14 bbWeight=0 PerfScore 0.00-G_M51920_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M51920_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rbx rsi rdi r15]
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00-G_M51920_IG16: ; bbWeight=0, epilog, nogc, extend+G_M51920_IG17: ; bbWeight=0, epilog, nogc, extend add rsp, 8
pop rbx
pop r14
@@ -160,7 +166,7 @@ G_M51920_IG16: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0 PerfScore 0.00-G_M51920_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref+G_M51920_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx r14-r15]
mov rdi, gword ptr [r14+0x20]
; gcrRegs +[rdi]
@@ -171,7 +177,7 @@ G_M51920_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C008 {
mov r11, 0xD1FFAB1E ; code for <unknown method>
cmp dword ptr [rdi], edi
;; size=22 bbWeight=0 PerfScore 0.00-G_M51920_IG18: ; bbWeight=0, epilog, nogc, extend+G_M51920_IG19: ; bbWeight=0, epilog, nogc, extend add rsp, 8
pop rbx
pop r14
@@ -179,8 +185,13 @@ G_M51920_IG18: ; bbWeight=0, epilog, nogc, extend
pop rbp
tail.jmp [r11]<unknown method>
;; size=13 bbWeight=0 PerfScore 0.00+G_M51920_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rdx rbx rsi rdi r14-r15]
+ xor eax, eax
+ jmp SHORT G_M51920_IG10
+ ;; size=4 bbWeight=0 PerfScore 0.00 -; Total bytes of code 300, prolog size 21, PerfScore 28.32, instruction count 91, allocated bytes for code 300 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)+; Total bytes of code 318, prolog size 21, PerfScore 29.05, instruction count 95, allocated bytes for code 318 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1) ; ============================================================
Unwind Info:
@@ -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 -> rbx single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> rbx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 loc0 [V02 ] ( 1, 1 ) struct (64) [rbp-0x60] 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) [rbp-0x168] 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 -> rbx class-hnd single-def <System.__Canon[]>+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> r15 class-hnd single-def <System.__Canon[]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+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 -> r14 "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 -> rax "field V08._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T13] ( 3, 3 ) int -> rdx "field V08._length (fldOffset=0x8)" P-INDEP+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> rax "field V08._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T07] ( 3, 3 ) int -> rdx "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 -> rdi "argument with side effect"
-; V18 tmp13 [V18,T09] ( 2, 4 ) long -> rsi "argument with side effect"
-; V19 tmp14 [V19,T10] ( 2, 4 ) long -> rsi "argument with side effect"
-; V20 tmp15 [V20,T11] ( 2, 4 ) long -> rsi "argument with side effect"
-; V21 cse0 [V21,T05] ( 4, 4 ) long -> r14 "CSE - moderate"
-; V22 rat0 [V22,T06] ( 3, 4 ) long -> rdi "runtime lookup"
-; V23 rat1 [V23,T01] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T07] ( 3, 4 ) long -> r14 "runtime lookup"
-; V25 rat3 [V25,T02] ( 3, 5.60) long -> rdi "spilling expr"
-; V26 rat4 [V26,T04] ( 3, 4.48) long -> r14 "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> rsi "argument with side effect"
+; V18 tmp13 [V18,T04] ( 2, 4 ) long -> rsi "argument with side effect"
+; V19 tmp14 [V19,T05] ( 2, 4 ) long -> rsi "argument with side effect" ;
; Lcl frame size = 344
@@ -61,23 +54,16 @@ G_M19942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15, rsi
; gcrRegs +[r15]
;; size=94 bbWeight=1 PerfScore 19.33-G_M19942_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- je SHORT G_M19942_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M19942_IG03: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19942_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M19942_IG04: ; bbWeight=0.20, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref+G_M19942_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M19942_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz+ call CORINFO_HELP_MEMCPY
+ mov r14, rax
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY lea rsi, [rbp-0x60]+ mov rdi, r14 mov edx, 8
call [<PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon]]
; byrRegs +[rax]
@@ -85,46 +71,36 @@ G_M19942_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr
mov dword ptr [rbp-0x78], edx
mov bword ptr [rbp-0x70], rax
mov dword ptr [rbp-0x68], edx- mov rdi, qword ptr [rbx+0x38]
- cmp qword ptr [rdi+0x08], 24
- jle SHORT G_M19942_IG08
- ;; size=40 bbWeight=1 PerfScore 13.75
-G_M19942_IG06: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rax]
- mov r14, qword ptr [rdi+0x18]
- test r14, r14
- je SHORT G_M19942_IG08
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M19942_IG07: ; bbWeight=0.64, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19942_IG09
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M19942_IG08: ; bbWeight=0.36, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov r14, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M19942_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- mov rsi, r14+ call CORINFO_HELP_MEMCPY
+ ; byrRegs -[rax]
+ mov rsi, rax lea rdi, [rbp-0x168]
mov rdx, r15
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx r15]- mov rsi, r14+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rsi, rax lea rdi, [rbp-0x168]
call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcrRegs +[rax]- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rsi, r14+ mov r15, rax
+ ; gcrRegs +[r15]
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcrRegs -[rax]
+ mov rsi, rax lea rdi, [rbp-0x168]
call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this]- ; gcrRegs -[rax]
- mov rax, rbx+ mov rax, r15 ; gcrRegs +[rax]- ;; size=57 bbWeight=1 PerfScore 12.00
-G_M19942_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=182 bbWeight=1 PerfScore 27.75
+G_M19942_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 344
pop rbx
pop r14
@@ -133,7 +109,7 @@ G_M19942_IG10: ; bbWeight=1, epilog, nogc, extend
ret
;; size=14 bbWeight=1 PerfScore 3.25
-; Total bytes of code 273, prolog size 88, PerfScore 60.04, instruction count 65, allocated bytes for code 273 (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 290, prolog size 88, PerfScore 50.33, instruction count 62, allocated bytes for code 290 (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:
@@ -2,51 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x10]
- test rsi, rsi
- 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+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp+ mov rdi, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 tail.jmp [System.Array:Empty[System.__Canon]():System.__Canon[]]
; gcr arg pop 0- ;; size=11 bbWeight=1 PerfScore 2.75+ ;; size=10 bbWeight=1 PerfScore 2.25 -; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -54,10 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span
1System.__Canon@@ -2,67 +2,50 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rbx single-def
-; V02 arg1 [V02,T03] ( 3, 3 ) int -> r15 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rbx single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> r15 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-DEP
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-DEP-; V08 tmp5 [V08,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M5478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; byrRegs +[rbx]
mov r15d, edx- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x18]
- test rax, rax
- je SHORT G_M5478_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M5478_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, rax
- jmp SHORT G_M5478_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M5478_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M5478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rsi, rbx
; byrRegs +[rsi]
mov edx, r15d- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M5478_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M5478_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon]]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -70,12 +53,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -2,66 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) byref -> r15 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V02 arg1 [V02,T02] ( 3, 3 ) byref -> r15 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M55749_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; byrRegs +[r15]- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M55749_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M55749_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M55749_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov rdi, rax
- jmp SHORT G_M55749_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M55749_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M55749_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M55749_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref mov rsi, rbx
; gcrRegs +[rsi]
mov rdx, r15
; byrRegs +[rdx]- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M55749_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M55749_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=4c6f263a) for method System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=4c6f263a) for method System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts) ; ============================================================
Unwind Info:
@@ -69,12 +52,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -14,8 +14,8 @@
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret <System.DateTime>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [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 -> rdi "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 -> rdi "field V13._ticks (fldOffset=0x0)" P-INDEP-; V21 cse0 [V21,T03] ( 2, 9 ) long -> r13 hoist "CSE - aggressive"
-; V22 cse1 [V22,T07] ( 3, 6 ) long -> r14 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 -> r13 hoist "CSE - aggressive"
+; V24 cse1 [V24,T07] ( 3, 6 ) long -> r14 hoist "CSE - aggressive" ;
; Lcl frame size = 8
@@ -64,10 +66,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 r15d, xmm0+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD48], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD64], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD80]
+ vcvttsd2si edi, xmm0
+ vpbroadcastd xmm0, edi
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd r15d, xmm1 mov r14, qword ptr [rbx]
mov r13, qword ptr [r14+0x50]- ;; size=31 bbWeight=1 PerfScore 30.00+ ;; size=77 bbWeight=1 PerfScore 44.50 G_M23588_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
@@ -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 231, prolog size 19, PerfScore 184.33, instruction count 59, allocated bytes for code 231 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)+; Total bytes of code 277, prolog size 19, PerfScore 198.83, instruction count 65, allocated bytes for code 277 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts) ; ============================================================
Unwind Info:
1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray
1[System.__Canon]:this (FullOpts)@@ -2,66 +2,61 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; partially interruptible
; No matching PGO data
; 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 -> rsi single-def+; V00 this [V00,T01] ( 3, 3 ) byref -> r15 this single-def
+; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> rbx single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [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 -> r14 "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 -> rdi "argument with side effect"
-; V09 rat0 [V09,T03] ( 3, 4 ) long -> rdi "runtime lookup"
-; V10 rat1 [V10,T01] ( 3, 5.60) long -> rdi "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 = 8+; Lcl frame size = 16
G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp+ push r15
+ push r14 push rbx- push rax
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x10], rsi
- mov rbx, rdi
- ; byrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, qword ptr [rsi+0x38]
- mov rdi, qword ptr [rdi+0x10]
- test rdi, rdi
- 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 rdi, rsi+ sub rsp, 16
+ mov qword ptr [rsp+0x08], rsi
+ mov r15, rdi
+ ; byrRegs +[r15]
+ mov rbx, rsi
+ ;; size=20 bbWeight=1 PerfScore 4.75
+G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov rdi, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov rsi, gword ptr [rbx]+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov r14, rax
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rsi, gword ptr [r15] ; gcrRegs +[rsi]- call CORINFO_HELP_ISINSTANCEOFARRAY+ mov rdi, r14
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE ; gcrRegs -[rsi] +[rax]- ; byrRegs -[rbx]+ ; byrRegs -[r15]
+ ; gcr arg pop 0 nop - ;; size=9 bbWeight=1 PerfScore 3.25
-G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8+ ;; size=51 bbWeight=1 PerfScore 6.75
+G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16 pop rbx- pop rbp+ pop r14
+ pop r15 ret - ;; size=7 bbWeight=1 PerfScore 2.25+ ;; size=10 bbWeight=1 PerfScore 2.75 -; Total bytes of code 67, prolog size 12, PerfScore 17.45, instruction count 22, allocated bytes for code 67 (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 81, prolog size 14, PerfScore 14.25, instruction count 23, allocated bytes for code 81 (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,11 +64,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3+ SizeOfProlog : 0x09
+ CountOfUnwindCodes: 4 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -8,21 +8,20 @@
; 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 -> rdi single-def+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx 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 -> rbx class-hnd single-def <System.String>+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+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 -> r11 "VirtualCall with runtime lookup"+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> r12 "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 -> r15 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> r14 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> rax single-def "field V06.Node (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> rdx "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V14 rat0 [V14,T02] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> r14 single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> r13 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> rax single-def "field V06.Node (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> rdx "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP ;
; Lcl frame size = 8
@@ -30,49 +29,48 @@ G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push r15
push r14+ push r13
+ push r12 push rbx
push rax- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi
- mov r15, rsi+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x30], rdi
+ mov rbx, rdi
+ mov r14, rsi
+ ; gcrRegs +[r14]
+ mov r13d, edx
+ mov r15, rcx ; gcrRegs +[r15]- mov r14d, edx
- mov rbx, rcx
- ; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 7.25
-G_M18340_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov r11, qword ptr [rsi+0x10]
- test r11, r11
- je SHORT G_M18340_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M18340_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref+ ;; size=32 bbWeight=1 PerfScore 9.50
+G_M18340_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov r11, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M18340_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rdi, r15+ call CORINFO_HELP_MEMCPY
+ mov r12, rax
+ mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ mov rdi, r14 ; gcrRegs +[rdi]- mov rsi, rbx+ mov r11, r12
+ mov rsi, r15 ; gcrRegs +[rsi]- call [r11]
- ; gcrRegs -[rbx rsi rdi r15] +[rax]
- movzx rdx, r14b
- ;; size=13 bbWeight=1 PerfScore 3.75
-G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend+ call [r12]
+ ; gcrRegs -[rsi rdi r14-r15] +[rax]
+ movzx rdx, r13b
+ ;; size=56 bbWeight=1 PerfScore 7.25
+G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 8
pop rbx+ pop r12
+ pop r13 pop r14
pop r15
pop rbp
ret - ;; size=11 bbWeight=1 PerfScore 3.25+ ;; size=15 bbWeight=1 PerfScore 4.25 -; Total bytes of code 82, prolog size 16, PerfScore 21.40, instruction count 28, allocated bytes for code 82 (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 103, prolog size 20, PerfScore 21.00, instruction count 33, allocated bytes for code 103 (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:
@@ -80,13 +78,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -2,51 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup"
-; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov qword ptr [rbp-0x08], rdi
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rsi, qword ptr [rsi+0x10]
- test rsi, rsi
- 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+ push rax
+ mov qword ptr [rsp], rdi
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rsi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, rsi
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
- pop rbp+ mov rdi, rax
+ ;; size=18 bbWeight=1 PerfScore 1.50
+G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 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=11 bbWeight=1 PerfScore 2.75+ ;; size=10 bbWeight=1 PerfScore 2.25 -; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -54,10 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
@@ -2,64 +2,47 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) int -> r15 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) int -> r15 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M43339_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov r15d, esi
mov rbx, rdx
; gcrRegs +[rbx]- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M43339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x10]
- test rax, rax
- je SHORT G_M43339_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M43339_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, rax
- jmp SHORT G_M43339_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M43339_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M43339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M43339_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov esi, r15d
mov rdx, rbx
; gcrRegs +[rdx]- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M43339_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M43339_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [Microsoft.FSharp.Primitives.Basics.List:init[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=cbea56b4) for method Microsoft.FSharp.Collections.ListModule:Initialize[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=cbea56b4) for method Microsoft.FSharp.Collections.ListModule:Initialize[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
@@ -67,12 +50,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -2,66 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code-; rbp based frame+; rsp based frame ; fully interruptible
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect" ;-; Lcl frame size = 16+; Lcl frame size = 8
G_M21566_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push rbp push r15
push rbx- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x18], rdi+ push rax
+ mov qword ptr [rsp], rdi mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]- ;; size=23 bbWeight=1 PerfScore 5.25
-G_M21566_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [rdi+0x38]
- mov rax, qword ptr [rsi+0x18]
- test rax, rax
- je SHORT G_M21566_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M21566_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, rax
- jmp SHORT G_M21566_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M21566_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref+ ;; size=14 bbWeight=1 PerfScore 4.50
+G_M21566_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, 0xD1FFAB1E ; global ptr- call CORINFO_HELP_RUNTIMEHANDLE_METHOD+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0
mov rdi, rax- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M21566_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, rbx
; gcrRegs +[rsi]
mov rdx, r15
; gcrRegs +[rdx]- ;; size=6 bbWeight=1 PerfScore 0.50
-G_M21566_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M21566_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8 pop rbx
pop r15- pop rbp tail.jmp [Microsoft.FSharp.Primitives.Basics.List:choose[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]]
; gcr arg pop 0- ;; size=14 bbWeight=1 PerfScore 3.75+ ;; size=13 bbWeight=1 PerfScore 3.25 -; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=8610abc1) for method Microsoft.FSharp.Collections.ListModule:Choose[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)+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=8610abc1) for method Microsoft.FSharp.Collections.ListModule:Choose[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) ; ============================================================
Unwind Info:
@@ -69,12 +52,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -8,13 +8,15 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T04] ( 3, 3 ) float -> mm0 single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) float -> mm1 single-def+; V00 arg0 [V00,T06] ( 3, 3 ) float -> mm0 single-def
+; V01 arg1 [V01,T07] ( 3, 3 ) float -> mm1 single-def ; V02 arg2 [V02,T02] ( 4, 3 ) int -> rdi single-def
; V03 arg3 [V03,T01] ( 4, 3.50) int -> rsi single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 3, 2 ) int -> rsi "Inline return value spill temp"
; V06 tmp2 [V06,T00] ( 4, 6 ) int -> rax "Inlining Arg"+; V07 tmp3 [V07,T04] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T05] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -26,10 +28,16 @@ G_M33552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M33552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vaddss xmm0, xmm1, xmm0
vroundss xmm0, xmm0, xmm0, 9+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttss2si eax, xmm0+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, esi
jle SHORT G_M33552_IG04- ;; size=18 bbWeight=1 PerfScore 17.25+ ;; size=63 bbWeight=1 PerfScore 31.75 G_M33552_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M33552_IG05
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -45,8 +53,12 @@ G_M33552_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 4F0000004F000000h, 4F0000004F000000h
+RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh -; Total bytes of code 38, prolog size 7, PerfScore 22.62, instruction count 15, allocated bytes for code 38 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)+
+; Total bytes of code 83, prolog size 7, PerfScore 37.12, instruction count 21, allocated bytes for code 83 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts) ; ============================================================
Unwind Info:
@@ -8,13 +8,15 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T04] ( 3, 3 ) float -> mm0 single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) float -> mm1 single-def+; V00 arg0 [V00,T06] ( 3, 3 ) float -> mm0 single-def
+; V01 arg1 [V01,T07] ( 3, 3 ) float -> mm1 single-def ; V02 arg2 [V02,T02] ( 4, 3 ) int -> rdi single-def
; V03 arg3 [V03,T01] ( 4, 3.50) int -> rsi single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 3, 2 ) int -> rsi "Inline return value spill temp"
; V06 tmp2 [V06,T00] ( 4, 6 ) int -> rax "Inlining Arg"+; V07 tmp3 [V07,T04] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T05] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -26,10 +28,16 @@ G_M61631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M61631_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vsubss xmm0, xmm1, xmm0
vroundss xmm0, xmm0, xmm0, 10+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttss2si eax, xmm0+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, esi
jle SHORT G_M61631_IG04- ;; size=18 bbWeight=1 PerfScore 17.25+ ;; size=63 bbWeight=1 PerfScore 31.75 G_M61631_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M61631_IG05
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -45,8 +53,12 @@ G_M61631_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 4F0000004F000000h, 4F0000004F000000h
+RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh -; Total bytes of code 38, prolog size 7, PerfScore 22.62, instruction count 15, allocated bytes for code 38 (MethodHash=da4a0f40) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (FullOpts)+
+; Total bytes of code 83, prolog size 7, PerfScore 37.12, instruction count 21, allocated bytes for code 83 (MethodHash=da4a0f40) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (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
@@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
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 rax, xmm0- ;; size=25 bbWeight=1 PerfScore 17.58+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=71 bbWeight=1 PerfScore 32.08 G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
RWD00 dq 3F847AE147AE147Bh ; 0.01+RWD08 dd 00000000h, 00000000h
+RWD16 dq 0000000000000088h, 0000000000000000h
+RWD32 dq 43E0000000000000h, 43E0000000000000h
+RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (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) |
---|---|---|---|---|---|---|
benchmarks.run.linux.x64.checked.mch | 1,566 | 101 | 13 | 1,452 | -5,181 | +595 |
benchmarks.run_pgo.linux.x64.checked.mch | 2,749 | 268 | 41 | 2,440 | -16,906 | +1,587 |
benchmarks.run_tiered.linux.x64.checked.mch | 3,514 | 228 | 20 | 3,266 | -16,671 | +1,538 |
coreclr_tests.run.linux.x64.checked.mch | 322 | 46 | 29 | 247 | -364 | +428 |
libraries.crossgen2.linux.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.linux.x64.checked.mch | 4,766 | 573 | 30 | 4,163 | -20,742 | +665 |
libraries_tests.run.linux.x64.Release.mch | 2,491 | 305 | 6 | 2,180 | -21,433 | +246 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 1,823 | 136 | 21 | 1,666 | -7,314 | +544 |
realworld.run.linux.x64.checked.mch | 4,949 | 319 | 40 | 4,590 | -15,767 | +2,302 |
smoke_tests.nativeaot.linux.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
22,180 | 1,976 | 200 | 20,004 | -104,378 | +7,905 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.x64.checked.mch | 4,755 | 206 | 4,549 | 479 (5.25%) | 3,971 (43.52%) |
benchmarks.run_pgo.linux.x64.checked.mch | 15,194 | 12,448 | 2,746 | 179 (0.81%) | 6,612 (29.78%) |
benchmarks.run_tiered.linux.x64.checked.mch | 16,306 | 14,055 | 2,251 | 78 (0.36%) | 5,213 (23.79%) |
coreclr_tests.run.linux.x64.checked.mch | 2,258 | 1,403 | 855 | 37 (0.80%) | 1,967 (42.57%) |
libraries.crossgen2.linux.x64.checked.mch | 8,092 | 8 | 8,084 | 0 (0.00%) | 2,976 (25.96%) |
libraries.pmi.linux.x64.checked.mch | 12,191 | 0 | 12,191 | 416 (2.41%) | 4,689 (27.14%) |
libraries_tests.run.linux.x64.Release.mch | 11,104 | 10,372 | 732 | 75 (0.46%) | 4,834 (29.59%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 5,741 | 0 | 5,741 | 1,166 (10.85%) | 4,604 (42.86%) |
realworld.run.linux.x64.checked.mch | 9,034 | 22 | 9,012 | 998 (7.13%) | 4,572 (32.65%) |
smoke_tests.nativeaot.linux.x64.checked.mch | 7,923 | 2 | 7,921 | 212 (1.66%) | 4,460 (34.90%) |
92,598 | 38,516 | 54,082 | 3,640 (2.59%) | 43,898 (31.25%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 721868 (overridden on cmd)
Total bytes of diff: 717282 (overridden on cmd)
Total bytes of delta: -4586 (-0.64 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
91 : 1259.dasm (73.98 % of base)
54 : 3414.dasm (42.52 % of base)
54 : 4334.dasm (39.42 % of base)
50 : 8502.dasm (23.04 % of base)
50 : 3408.dasm (49.02 % of base)
50 : 5512.dasm (5.49 % of base)
46 : 1510.dasm (158.62 % of base)
46 : 3412.dasm (61.33 % of base)
45 : 835.dasm (84.91 % of base)
45 : 4488.dasm (4.27 % of base)
40 : 5038.dasm (70.18 % of base)
17 : 6826.dasm (6.25 % of base)
7 : 4962.dasm (3.27 % of base)
Top file improvements (bytes):
-322 : 6878.dasm (-21.54 % of base)
-276 : 6241.dasm (-26.11 % of base)
-225 : 1400.dasm (-18.63 % of base)
-181 : 240.dasm (-31.92 % of base)
-171 : 743.dasm (-33.08 % of base)
-156 : 244.dasm (-25.00 % of base)
-151 : 701.dasm (-24.04 % of base)
-126 : 5410.dasm (-26.58 % of base)
-125 : 9899.dasm (-15.90 % of base)
-111 : 5199.dasm (-20.11 % of base)
-111 : 634.dasm (-20.15 % of base)
-109 : 7543.dasm (-32.63 % of base)
-103 : 5294.dasm (-27.47 % of base)
-84 : 10694.dasm (-17.95 % of base)
-83 : 209.dasm (-21.17 % of base)
-83 : 6272.dasm (-23.12 % of base)
-70 : 6268.dasm (-20.53 % of base)
-63 : 104.dasm (-18.05 % of base)
-63 : 6400.dasm (-27.88 % of base)
-62 : 10318.dasm (-22.38 % of base)
47 total files with Code Size differences (34 improved, 13 regressed), 27 unchanged.
Top method regressions (bytes):
91 (73.98 % of base) : 1259.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
54 (39.42 % of base) : 4334.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
54 (42.52 % of base) : 3414.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
50 (23.04 % of base) : 8502.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
50 (5.49 % of base) : 5512.dasm - System.Double:SinPi(double):double (FullOpts)
50 (49.02 % of base) : 3408.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
46 (158.62 % of base) : 1510.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
46 (61.33 % of base) : 3412.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
45 (4.27 % of base) : 4488.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
45 (84.91 % of base) : 835.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
40 (70.18 % of base) : 5038.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
17 (6.25 % of base) : 6826.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)
7 (3.27 % of base) : 4962.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-322 (-21.54 % of base) : 6878.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
-276 (-26.11 % of base) : 6241.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)
-225 (-18.63 % of base) : 1400.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)
-181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-156 (-25.00 % of base) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-24.04 % of base) : 701.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 (-26.58 % of base) : 5410.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-125 (-15.90 % of base) : 9899.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
-111 (-20.15 % of base) : 634.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-111 (-20.11 % of base) : 5199.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)
-109 (-32.63 % of base) : 7543.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-103 (-27.47 % of base) : 5294.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-84 (-17.95 % of base) : 10694.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
-83 (-23.12 % of base) : 6272.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-83 (-21.17 % of base) : 209.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 (-20.53 % of base) : 6268.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 (-18.05 % of base) : 104.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
-63 (-27.88 % of base) : 6400.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-62 (-22.38 % of base) : 10318.dasm - System.Array:BinarySearch[System.__Canon](System.__Canon[],int,int,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
Top method regressions (percentages):
46 (158.62 % of base) : 1510.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
45 (84.91 % of base) : 835.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
91 (73.98 % of base) : 1259.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
40 (70.18 % of base) : 5038.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
46 (61.33 % of base) : 3412.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
50 (49.02 % of base) : 3408.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
54 (42.52 % of base) : 3414.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
54 (39.42 % of base) : 4334.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
50 (23.04 % of base) : 8502.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
17 (6.25 % of base) : 6826.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)
50 (5.49 % of base) : 5512.dasm - System.Double:SinPi(double):double (FullOpts)
45 (4.27 % of base) : 4488.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
7 (3.27 % of base) : 4962.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):
-28 (-35.44 % of base) : 5190.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 6271.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)
-28 (-34.57 % of base) : 6998.dasm - ProtoBuf.Serializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
-28 (-34.57 % of base) : 7970.dasm - Utf8Json.JsonSerializer:Deserialize[System.__Canon](ubyte[],Utf8Json.IJsonFormatterResolver):System.__Canon (FullOpts)
-171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-109 (-32.63 % of base) : 7543.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-47 (-32.41 % of base) : 7018.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-28 (-30.43 % of base) : 10374.dasm - MessagePack.MessagePackSerializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
-28 (-29.17 % of base) : 4110.dasm - System.Threading.Tasks.TaskCache:CreateCacheableTask[System.__Canon](System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
-38 (-29.01 % of base) : 5762.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-63 (-27.88 % of base) : 6400.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-25 (-27.47 % of base) : 4783.dasm - System.SZArrayHelper:Contains[System.__Canon](System.__Canon):ubyte:this (FullOpts)
-103 (-27.47 % of base) : 5294.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-37 (-27.41 % of base) : 4960.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-18 (-27.27 % of base) : 1609.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start[System.Text.Json.Serialization.Tests.ReadJson`1+<Setup>d__5[System.__Canon]](byref):this (FullOpts)
-37 (-26.81 % of base) : 4880.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-28 (-26.67 % of base) : 5756.dasm - Sigil.Impl.LinqAlternative:_Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-126 (-26.58 % of base) : 5410.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-37 (-26.24 % of base) : 1661.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2059337 (overridden on cmd)
Total bytes of diff: 2044018 (overridden on cmd)
Total bytes of delta: -15319 (-0.74 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
143 : 5211.dasm (97.95 % of base)
138 : 22461.dasm (87.34 % of base)
106 : 13822.dasm (6.72 % of base)
94 : 14684.dasm (11.60 % of base)
80 : 6303.dasm (103.90 % of base)
80 : 6665.dasm (103.90 % of base)
74 : 2802.dasm (54.01 % of base)
72 : 14118.dasm (78.26 % of base)
72 : 14177.dasm (56.25 % of base)
71 : 10553.dasm (83.53 % of base)
71 : 13584.dasm (33.18 % of base)
71 : 3078.dasm (112.70 % of base)
66 : 18703.dasm (9.09 % of base)
65 : 5116.dasm (25.79 % of base)
46 : 6839.dasm (158.62 % of base)
13 : 11312.dasm (11.11 % of base)
13 : 13060.dasm (11.11 % of base)
13 : 16612.dasm (11.11 % of base)
13 : 18396.dasm (11.11 % of base)
13 : 19060.dasm (11.11 % of base)
Top file improvements (bytes):
-591 : 16933.dasm (-29.71 % of base)
-464 : 2699.dasm (-48.84 % of base)
-461 : 890.dasm (-49.25 % of base)
-403 : 2505.dasm (-42.07 % of base)
-403 : 900.dasm (-39.16 % of base)
-347 : 5938.dasm (-35.44 % of base)
-341 : 16931.dasm (-37.43 % of base)
-340 : 3469.dasm (-44.04 % of base)
-288 : 11626.dasm (-43.70 % of base)
-288 : 16301.dasm (-41.50 % of base)
-279 : 2278.dasm (-31.70 % of base)
-240 : 8503.dasm (-42.93 % of base)
-234 : 342.dasm (-37.50 % of base)
-219 : 10592.dasm (-28.89 % of base)
-213 : 11805.dasm (-36.98 % of base)
-211 : 736.dasm (-35.82 % of base)
-205 : 23441.dasm (-12.33 % of base)
-195 : 8507.dasm (-36.38 % of base)
-195 : 10819.dasm (-36.59 % of base)
-162 : 2681.dasm (-34.03 % of base)
55 total files with Code Size differences (33 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
143 (97.95 % of base) : 5211.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 22461.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
106 (6.72 % of base) : 13822.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
94 (11.60 % of base) : 14684.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
80 (103.90 % of base) : 6665.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 6303.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
74 (54.01 % of base) : 2802.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (56.25 % of base) : 14177.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
72 (78.26 % of base) : 14118.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
71 (83.53 % of base) : 10553.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
71 (33.18 % of base) : 13584.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
71 (112.70 % of base) : 3078.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
66 (9.09 % of base) : 18703.dasm - System.Double:SinPi(double):double (Tier0)
65 (25.79 % of base) : 5116.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
46 (158.62 % of base) : 6839.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
13 (11.11 % of base) : 11312.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 13060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 16612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 18396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 19060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-591 (-29.71 % of base) : 16933.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)
-464 (-48.84 % of base) : 2699.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-461 (-49.25 % of base) : 890.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-403 (-39.16 % of base) : 900.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-403 (-42.07 % of base) : 2505.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)
-347 (-35.44 % of base) : 5938.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)
-341 (-37.43 % of base) : 16931.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)
-340 (-44.04 % of base) : 3469.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-43.70 % of base) : 11626.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-288 (-41.50 % of base) : 16301.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)
-279 (-31.70 % of base) : 2278.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-42.93 % of base) : 8503.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)
-234 (-37.50 % of base) : 342.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-219 (-28.89 % of base) : 10592.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
-213 (-36.98 % of base) : 11805.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-211 (-35.82 % of base) : 736.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)
-205 (-12.33 % of base) : 23441.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
-195 (-36.59 % of base) : 10819.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-195 (-36.38 % of base) : 8507.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-162 (-34.03 % of base) : 2681.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):
46 (158.62 % of base) : 6839.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
71 (112.70 % of base) : 3078.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
80 (103.90 % of base) : 6665.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 6303.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
143 (97.95 % of base) : 5211.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 22461.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
71 (83.53 % of base) : 10553.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
72 (78.26 % of base) : 14118.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
72 (56.25 % of base) : 14177.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
74 (54.01 % of base) : 2802.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
71 (33.18 % of base) : 13584.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
65 (25.79 % of base) : 5116.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
94 (11.60 % of base) : 14684.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
13 (11.11 % of base) : 11312.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 13060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 16612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 18396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 19060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 10052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
13 (11.11 % of base) : 12596.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-461 (-49.25 % of base) : 890.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-464 (-48.84 % of base) : 2699.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-340 (-44.04 % of base) : 3469.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-43.70 % of base) : 11626.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) : 8503.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)
-403 (-42.07 % of base) : 2505.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) : 20654.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-81 (-41.54 % of base) : 10332.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-288 (-41.50 % of base) : 16301.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 (-41.18 % of base) : 3468.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.95 % of base) : 3821.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.31 % of base) : 21328.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) : 886.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)
-81 (-40.10 % of base) : 8621.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-129 (-39.81 % of base) : 2684.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)
-403 (-39.16 % of base) : 900.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-81 (-38.39 % of base) : 7462.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-129 (-38.17 % of base) : 7460.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
-234 (-37.50 % of base) : 342.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-341 (-37.43 % of base) : 16931.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)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2163412 (overridden on cmd)
Total bytes of diff: 2148279 (overridden on cmd)
Total bytes of delta: -15133 (-0.70 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
143 : 3678.dasm (97.95 % of base)
138 : 13603.dasm (87.34 % of base)
106 : 11325.dasm (6.72 % of base)
94 : 12181.dasm (11.60 % of base)
91 : 9554.dasm (73.98 % of base)
80 : 6046.dasm (103.90 % of base)
74 : 2559.dasm (54.01 % of base)
72 : 11688.dasm (56.25 % of base)
72 : 18605.dasm (104.35 % of base)
72 : 11630.dasm (78.26 % of base)
72 : 19263.dasm (80.90 % of base)
71 : 15588.dasm (83.53 % of base)
71 : 17841.dasm (34.80 % of base)
71 : 11049.dasm (33.18 % of base)
71 : 2800.dasm (112.70 % of base)
66 : 15879.dasm (9.09 % of base)
65 : 3590.dasm (25.79 % of base)
50 : 12803.dasm (23.04 % of base)
46 : 16176.dasm (158.62 % of base)
13 : 1617.dasm (11.11 % of base)
Top file improvements (bytes):
-591 : 13041.dasm (-29.71 % of base)
-464 : 2457.dasm (-48.95 % of base)
-461 : 779.dasm (-49.25 % of base)
-403 : 2253.dasm (-42.11 % of base)
-403 : 787.dasm (-39.16 % of base)
-347 : 13860.dasm (-35.44 % of base)
-341 : 13039.dasm (-37.47 % of base)
-340 : 4190.dasm (-44.16 % of base)
-333 : 15013.dasm (-43.08 % of base)
-288 : 12920.dasm (-41.50 % of base)
-288 : 8938.dasm (-43.70 % of base)
-279 : 2034.dasm (-31.70 % of base)
-240 : 14263.dasm (-42.93 % of base)
-234 : 327.dasm (-37.50 % of base)
-219 : 5160.dasm (-28.89 % of base)
-213 : 9125.dasm (-36.98 % of base)
-211 : 677.dasm (-35.82 % of base)
-205 : 19775.dasm (-12.33 % of base)
-195 : 15809.dasm (-36.59 % of base)
-195 : 4540.dasm (-36.38 % of base)
54 total files with Code Size differences (34 improved, 20 regressed), 21 unchanged.
Top method regressions (bytes):
143 (97.95 % of base) : 3678.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 13603.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
106 (6.72 % of base) : 11325.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
94 (11.60 % of base) : 12181.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
91 (73.98 % of base) : 9554.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
80 (103.90 % of base) : 6046.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
74 (54.01 % of base) : 2559.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (104.35 % of base) : 18605.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier0)
72 (56.25 % of base) : 11688.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
72 (80.90 % of base) : 19263.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
72 (78.26 % of base) : 11630.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
71 (34.80 % of base) : 17841.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) : 15588.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
71 (33.18 % of base) : 11049.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
71 (112.70 % of base) : 2800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
66 (9.09 % of base) : 15879.dasm - System.Double:SinPi(double):double (Tier0)
65 (25.79 % of base) : 3590.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
50 (23.04 % of base) : 12803.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier1)
46 (158.62 % of base) : 16176.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
13 (11.11 % of base) : 1617.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-591 (-29.71 % of base) : 13041.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)
-464 (-48.95 % of base) : 2457.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-461 (-49.25 % of base) : 779.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-403 (-39.16 % of base) : 787.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-403 (-42.11 % of base) : 2253.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)
-347 (-35.44 % of base) : 13860.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)
-341 (-37.47 % of base) : 13039.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)
-340 (-44.16 % of base) : 4190.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-333 (-43.08 % of base) : 15013.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-288 (-43.70 % of base) : 8938.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-288 (-41.50 % of base) : 12920.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)
-279 (-31.70 % of base) : 2034.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-42.93 % of base) : 14263.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)
-234 (-37.50 % of base) : 327.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-219 (-28.89 % of base) : 5160.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
-213 (-36.98 % of base) : 9125.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-211 (-35.82 % of base) : 677.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)
-205 (-12.33 % of base) : 19775.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
-195 (-36.59 % of base) : 15809.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-195 (-36.38 % of base) : 4540.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
Top method regressions (percentages):
46 (158.62 % of base) : 16176.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
71 (112.70 % of base) : 2800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
72 (104.35 % of base) : 18605.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier0)
80 (103.90 % of base) : 6046.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
143 (97.95 % of base) : 3678.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 13603.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
71 (83.53 % of base) : 15588.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
72 (80.90 % of base) : 19263.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
72 (78.26 % of base) : 11630.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
91 (73.98 % of base) : 9554.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
72 (56.25 % of base) : 11688.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
74 (54.01 % of base) : 2559.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
71 (34.80 % of base) : 17841.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 (33.18 % of base) : 11049.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
65 (25.79 % of base) : 3590.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
50 (23.04 % of base) : 12803.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier1)
94 (11.60 % of base) : 12181.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
13 (11.11 % of base) : 1617.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
66 (9.09 % of base) : 15879.dasm - System.Double:SinPi(double):double (Tier0)
106 (6.72 % of base) : 11325.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
Top method improvements (percentages):
-461 (-49.25 % of base) : 779.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-464 (-48.95 % of base) : 2457.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-340 (-44.16 % of base) : 4190.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-288 (-43.70 % of base) : 8938.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-333 (-43.08 % of base) : 15013.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-240 (-42.93 % of base) : 14263.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)
-403 (-42.11 % of base) : 2253.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) : 17272.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-288 (-41.50 % of base) : 12920.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.33 % of base) : 15418.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-133 (-41.18 % of base) : 4189.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-41.08 % of base) : 4322.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.31 % of base) : 17797.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) : 774.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)
-81 (-40.10 % of base) : 19446.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-81 (-40.10 % of base) : 6900.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-81 (-40.10 % of base) : 20189.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
-129 (-39.81 % of base) : 2443.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)
-403 (-39.16 % of base) : 787.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-81 (-38.39 % of base) : 7254.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 x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 407681 (overridden on cmd)
Total bytes of diff: 407745 (overridden on cmd)
Total bytes of delta: 64 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
71 : 3265.dasm (110.94 % of base)
71 : 669.dasm (33.18 % of base)
53 : 2866.dasm (6.56 % of base)
46 : 1823.dasm (158.62 % of base)
46 : 2770.dasm (158.62 % of base)
18 : 4312.dasm (8.96 % of base)
16 : 4322.dasm (9.20 % of base)
13 : 3873.dasm (10.74 % of base)
13 : 4028.dasm (10.74 % of base)
13 : 4242.dasm (8.13 % of base)
11 : 4060.dasm (9.09 % of base)
6 : 1168.dasm (4.84 % of base)
3 : 3780.dasm (3.26 % of base)
3 : 3792.dasm (3.26 % of base)
3 : 4111.dasm (3.26 % of base)
3 : 4121.dasm (3.75 % of base)
3 : 4172.dasm (3.75 % of base)
3 : 4182.dasm (3.75 % of base)
3 : 4232.dasm (3.26 % of base)
3 : 4272.dasm (3.26 % of base)
Top file improvements (bytes):
-33 : 1912.dasm (-17.55 % of base)
-33 : 1056.dasm (-17.55 % of base)
-33 : 2613.dasm (-17.46 % of base)
-33 : 437.dasm (-29.73 % of base)
-28 : 2369.dasm (-30.11 % of base)
-20 : 2217.dasm (-16.95 % of base)
-5 : 3622.dasm (-6.58 % of base)
-5 : 3804.dasm (-6.85 % of base)
-5 : 3827.dasm (-6.85 % of base)
-5 : 3833.dasm (-6.85 % of base)
-5 : 3838.dasm (-6.58 % of base)
-5 : 3844.dasm (-6.58 % of base)
-5 : 3849.dasm (-5.75 % of base)
-5 : 3861.dasm (-5.88 % of base)
-5 : 3906.dasm (-6.85 % of base)
-5 : 3946.dasm (-6.85 % of base)
-5 : 3956.dasm (-6.85 % of base)
-5 : 3966.dasm (-6.58 % of base)
-5 : 3976.dasm (-6.58 % of base)
-5 : 3986.dasm (-5.75 % of base)
48 total files with Code Size differences (26 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
71 (110.94 % of base) : 3265.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
71 (33.18 % of base) : 669.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
53 (6.56 % of base) : 2866.dasm - System.Diagnostics.ProcessWaitState:WaitForExit(int):ubyte:this (Tier1)
46 (158.62 % of base) : 1823.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (158.62 % of base) : 2770.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
18 (8.96 % of base) : 4312.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
16 (9.20 % of base) : 4322.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (10.74 % of base) : 4028.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (10.74 % of base) : 3873.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
13 (8.13 % of base) : 4242.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
11 (9.09 % of base) : 4060.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
6 (4.84 % of base) : 1168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
3 (3.26 % of base) : 3780.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
3 (3.26 % of base) : 4111.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.75 % of base) : 4121.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.75 % of base) : 4172.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.75 % of base) : 4182.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 4232.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 4272.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 3792.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
Top method improvements (bytes):
-33 (-29.73 % of base) : 437.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-33 (-17.55 % of base) : 1912.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)
-33 (-17.55 % of base) : 1056.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)
-33 (-17.46 % of base) : 2613.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 (Tier1)
-28 (-30.11 % of base) : 2369.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-20 (-16.95 % of base) : 2217.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
-5 (-6.58 % of base) : 3622.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-5 (-6.85 % of base) : 3906.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.85 % of base) : 3827.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.85 % of base) : 3833.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-5.88 % of base) : 4006.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.58 % of base) : 3838.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.58 % of base) : 3844.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-5.75 % of base) : 3849.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-5.75 % of base) : 4037.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-5.88 % of base) : 3861.dasm - NullableTest16:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-4.95 % of base) : 4070.dasm - NullableTest17:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.58 % of base) : 4088.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-4.35 % of base) : 4141.dasm - NullableTest24:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-4.95 % of base) : 4202.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method regressions (percentages):
46 (158.62 % of base) : 1823.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (158.62 % of base) : 2770.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
71 (110.94 % of base) : 3265.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
71 (33.18 % of base) : 669.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
13 (10.74 % of base) : 4028.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (10.74 % of base) : 3873.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
16 (9.20 % of base) : 4322.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
11 (9.09 % of base) : 4060.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
18 (8.96 % of base) : 4312.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (8.13 % of base) : 4242.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
53 (6.56 % of base) : 2866.dasm - System.Diagnostics.ProcessWaitState:WaitForExit(int):ubyte:this (Tier1)
6 (4.84 % of base) : 1168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
3 (3.75 % of base) : 4121.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.75 % of base) : 4172.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.75 % of base) : 4182.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 3780.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
3 (3.26 % of base) : 4111.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 4232.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 4272.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
3 (3.26 % of base) : 3792.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
Top method improvements (percentages):
-28 (-30.11 % of base) : 2369.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-33 (-29.73 % of base) : 437.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-33 (-17.55 % of base) : 1912.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)
-33 (-17.55 % of base) : 1056.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)
-33 (-17.46 % of base) : 2613.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 (Tier1)
-20 (-16.95 % of base) : 2217.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
-5 (-6.85 % of base) : 3906.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.85 % of base) : 3827.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.85 % of base) : 3833.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.85 % of base) : 3946.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.85 % of base) : 3804.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.85 % of base) : 3956.dasm - NullableTest6:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.58 % of base) : 3622.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-5 (-6.58 % of base) : 3838.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.58 % of base) : 3844.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.58 % of base) : 4088.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.58 % of base) : 3966.dasm - NullableTest7:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.58 % of base) : 3976.dasm - NullableTest8:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-5.88 % of base) : 4006.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-5.88 % of base) : 3861.dasm - NullableTest16:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 737374 (overridden on cmd)
Total bytes of diff: 717297 (overridden on cmd)
Total bytes of delta: -20077 (-2.72 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
137 : 12390.dasm (27.51 % of base)
73 : 9701.dasm (9.61 % of base)
64 : 8996.dasm (22.15 % of base)
45 : 11003.dasm (51.72 % of base)
45 : 11006.dasm (59.21 % of base)
45 : 11027.dasm (59.21 % of base)
45 : 11024.dasm (51.72 % of base)
29 : 12166.dasm (13.36 % of base)
27 : 12110.dasm (23.48 % of base)
22 : 8601.dasm (8.37 % of base)
14 : 10559.dasm (5.60 % of base)
14 : 13036.dasm (10.85 % of base)
13 : 10138.dasm (15.29 % of base)
11 : 12145.dasm (9.82 % of base)
11 : 15336.dasm (7.86 % of base)
10 : 12143.dasm (8.85 % of base)
8 : 18305.dasm (1.94 % of base)
6 : 15294.dasm (4.05 % of base)
6 : 5256.dasm (2.52 % of base)
6 : 5260.dasm (1.35 % of base)
Top file improvements (bytes):
-148 : 12494.dasm (-22.02 % of base)
-122 : 6312.dasm (-24.50 % of base)
-122 : 2372.dasm (-24.50 % of base)
-120 : 2370.dasm (-33.33 % of base)
-120 : 2374.dasm (-33.33 % of base)
-118 : 12536.dasm (-22.78 % of base)
-118 : 12496.dasm (-23.51 % of base)
-117 : 1301.dasm (-29.92 % of base)
-116 : 13386.dasm (-17.96 % of base)
-115 : 2376.dasm (-27.91 % of base)
-109 : 10618.dasm (-24.55 % of base)
-108 : 5268.dasm (-22.93 % of base)
-106 : 8872.dasm (-26.04 % of base)
-106 : 8520.dasm (-27.11 % of base)
-103 : 12519.dasm (-21.68 % of base)
-103 : 5312.dasm (-26.68 % of base)
-103 : 11729.dasm (-25.00 % of base)
-100 : 9706.dasm (-13.16 % of base)
-99 : 2621.dasm (-30.75 % of base)
-99 : 2625.dasm (-30.75 % of base)
64 total files with Code Size differences (41 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
137 (27.51 % of base) : 12390.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)
73 (9.61 % of base) : 9701.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)
64 (22.15 % of base) : 8996.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 (51.72 % of base) : 11024.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 (59.21 % of base) : 11027.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 (51.72 % of base) : 11003.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 (59.21 % of base) : 11006.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)
29 (13.36 % of base) : 12166.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)
27 (23.48 % of base) : 12110.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)
22 (8.37 % of base) : 8601.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)
14 (5.60 % of base) : 10559.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)
14 (10.85 % of base) : 13036.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)
13 (15.29 % of base) : 10138.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
11 (7.86 % of base) : 15336.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)
11 (9.82 % of base) : 12145.dasm - Microsoft.FSharp.Core.ValueOption:FoldBack[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon],System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
10 (8.85 % of base) : 12143.dasm - Microsoft.FSharp.Core.ValueOption:Fold[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):System.Nullable`1[int] (FullOpts)
8 (1.94 % of base) : 18305.dasm - System.Reflection.Metadata.PropertyDefinition:DecodeSignature[System.__Canon,System.Nullable`1[int]](System.Reflection.Metadata.ISignatureTypeProvider`2[System.__Canon,System.Nullable`1[int]],System.Nullable`1[int]):System.Reflection.Metadata.MethodSignature`1[System.__Canon]:this (FullOpts)
6 (1.35 % of base) : 5260.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.52 % of base) : 5256.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.05 % of base) : 15294.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.02 % of base) : 12494.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 (-24.50 % of base) : 2372.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 (-24.50 % of base) : 6312.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)
-120 (-33.33 % of base) : 2370.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)
-120 (-33.33 % of base) : 2374.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)
-118 (-23.51 % of base) : 12496.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)
-118 (-22.78 % of base) : 12536.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)
-117 (-29.92 % of base) : 1301.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)
-116 (-17.96 % of base) : 13386.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)
-115 (-27.91 % of base) : 2376.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)
-109 (-24.55 % of base) : 10618.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 (-22.93 % of base) : 5268.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)
-106 (-26.04 % of base) : 8872.dasm - Microsoft.FSharp.Collections.MapTreeModule:partition1[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.Nullable`1[int],ubyte],System.__Canon,System.Nullable`1[int],Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-106 (-27.11 % of base) : 8520.dasm - Microsoft.FSharp.Collections.SetTreeModule:partition1[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon,Microsoft.FSharp.Collections.SetTree`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-103 (-26.68 % of base) : 5312.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.00 % of base) : 11729.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)
-103 (-21.68 % of base) : 12519.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)
-100 (-13.16 % of base) : 9706.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:sortChunk@2484-1[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],Microsoft.FSharp.Core.FSharpFunc`2[System.ArraySegment`1[System.Nullable`1[int]],System.Tuple`2[System.ArraySegment`1[System.Nullable`1[int]],System.ArraySegment`1[System.Nullable`1[int]]]],System.Collections.Generic.IComparer`1[System.__Canon],System.ArraySegment`1[System.Nullable`1[int]],int) (FullOpts)
-99 (-30.75 % of base) : 2621.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)
-99 (-30.75 % of base) : 2625.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)
Top method regressions (percentages):
45 (59.21 % of base) : 11027.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 (59.21 % of base) : 11006.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 (51.72 % of base) : 11024.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 (51.72 % of base) : 11003.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)
137 (27.51 % of base) : 12390.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)
27 (23.48 % of base) : 12110.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)
64 (22.15 % of base) : 8996.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)
13 (15.29 % of base) : 10138.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
29 (13.36 % of base) : 12166.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 (10.85 % of base) : 13036.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)
11 (9.82 % of base) : 12145.dasm - Microsoft.FSharp.Core.ValueOption:FoldBack[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon],System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
73 (9.61 % of base) : 9701.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)
10 (8.85 % of base) : 12143.dasm - Microsoft.FSharp.Core.ValueOption:Fold[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):System.Nullable`1[int] (FullOpts)
22 (8.37 % of base) : 8601.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)
11 (7.86 % of base) : 15336.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)
14 (5.60 % of base) : 10559.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)
6 (4.05 % of base) : 15294.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)
4 (3.92 % of base) : 12151.dasm - Microsoft.FSharp.Core.ValueOption:Contains[System.__Canon](System.__Canon,Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):ubyte (FullOpts)
4 (3.54 % of base) : 12164.dasm - Microsoft.FSharp.Core.ValueOption:Flatten[System.__Canon](Microsoft.FSharp.Core.FSharpValueOption`1[Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
5 (3.11 % of base) : 12170.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):
-28 (-45.90 % of base) : 9176.dasm - Microsoft.FSharp.Collections.ArrayModule:Empty[System.__Canon]():System.__Canon[] (FullOpts)
-28 (-45.90 % of base) : 11975.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:Structural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
-28 (-45.90 % of base) : 12008.dasm - Microsoft.FSharp.Collections.HashIdentity:Structural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-28 (-45.90 % of base) : 10065.dasm - Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-28 (-45.90 % of base) : 10463.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-28 (-45.90 % of base) : 15538.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
-28 (-45.90 % of base) : 15524.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericZero[System.__Canon]():System.__Canon (FullOpts)
-28 (-45.16 % of base) : 11977.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
-28 (-45.16 % of base) : 12013.dasm - Microsoft.FSharp.Collections.HashIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-28 (-45.16 % of base) : 12012.dasm - Microsoft.FSharp.Collections.HashIdentity:Reference[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-28 (-43.08 % of base) : 11842.dasm - Microsoft.FSharp.Collections.IEnumerator:Empty[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-47 (-35.61 % of base) : 9668.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
-47 (-35.61 % of base) : 9672.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-1[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
-47 (-35.61 % of base) : 9678.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
-47 (-35.61 % of base) : 2355.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)
-47 (-35.61 % of base) : 6316.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
-47 (-35.61 % of base) : 6286.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 10201.dasm - Microsoft.FSharp.Collections.ListModule:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 10053.dasm - Microsoft.FSharp.Collections.ListModule:MapIndexed[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.Nullable`1[int]] (FullOpts)
-28 (-35.44 % of base) : 2713.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators:PrintFormatLineToTextWriter[System.__Canon](System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1447569 (overridden on cmd)
Total bytes of diff: 1426382 (overridden on cmd)
Total bytes of delta: -21187 (-1.46 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
196 : 11460.dasm (39.52 % of base)
18 : 4533.dasm (6.00 % of base)
17 : 3726.dasm (6.23 % of base)
6 : 4668.dasm (4.84 % of base)
6 : 1144.dasm (4.84 % of base)
3 : 6489.dasm (0.97 % of base)
Top file improvements (bytes):
-464 : 49.dasm (-48.84 % of base)
-461 : 43.dasm (-49.20 % of base)
-403 : 1555.dasm (-39.24 % of base)
-403 : 164.dasm (-42.07 % of base)
-288 : 171.dasm (-42.99 % of base)
-288 : 2288.dasm (-43.70 % of base)
-288 : 684.dasm (-42.99 % of base)
-282 : 17749.dasm (-27.81 % of base)
-279 : 1584.dasm (-31.74 % of base)
-240 : 5423.dasm (-43.01 % of base)
-237 : 3076.dasm (-46.84 % of base)
-234 : 16241.dasm (-42.39 % of base)
-234 : 6455.dasm (-37.50 % of base)
-227 : 15141.dasm (-24.67 % of base)
-225 : 11615.dasm (-20.38 % of base)
-213 : 11323.dasm (-36.79 % of base)
-211 : 1825.dasm (-36.01 % of base)
-195 : 5094.dasm (-36.45 % of base)
-186 : 2573.dasm (-19.18 % of base)
-180 : 20306.dasm (-41.00 % of base)
39 total files with Code Size differences (33 improved, 6 regressed), 34 unchanged.
Top method regressions (bytes):
196 (39.52 % of base) : 11460.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
18 (6.00 % of base) : 4533.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
17 (6.23 % of base) : 3726.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
6 (4.84 % of base) : 4668.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
6 (4.84 % of base) : 1144.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
3 (0.97 % of base) : 6489.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
Top method improvements (bytes):
-464 (-48.84 % of base) : 49.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-461 (-49.20 % of base) : 43.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-403 (-39.24 % of base) : 1555.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-403 (-42.07 % of base) : 164.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)
-288 (-43.70 % of base) : 2288.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-288 (-42.99 % of base) : 684.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-288 (-42.99 % of base) : 171.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-282 (-27.81 % of base) : 17749.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] (Tier0)
-279 (-31.74 % of base) : 1584.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-43.01 % of base) : 5423.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-237 (-46.84 % of base) : 3076.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-234 (-37.50 % of base) : 6455.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
-234 (-42.39 % of base) : 16241.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
-227 (-24.67 % of base) : 15141.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (Tier0)
-225 (-20.38 % of base) : 11615.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 (Tier0)
-213 (-36.79 % of base) : 11323.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
-211 (-36.01 % of base) : 1825.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-195 (-36.45 % of base) : 5094.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
-186 (-19.18 % of base) : 2573.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
-180 (-41.00 % of base) : 20306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+TupleExtraData:<EqualsIgnoringTupleUnderlyingType>g__areEqual|20_0[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier0)
Top method regressions (percentages):
196 (39.52 % of base) : 11460.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
17 (6.23 % of base) : 3726.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
18 (6.00 % of base) : 4533.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
6 (4.84 % of base) : 4668.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
6 (4.84 % of base) : 1144.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
3 (0.97 % of base) : 6489.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
Top method improvements (percentages):
-461 (-49.20 % of base) : 43.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-464 (-48.84 % of base) : 49.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-237 (-46.84 % of base) : 3076.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-28 (-45.90 % of base) : 12382.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-129 (-44.18 % of base) : 9080.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
-129 (-43.88 % of base) : 7255.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-288 (-43.70 % of base) : 2288.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-81 (-43.55 % of base) : 12262.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
-81 (-43.55 % of base) : 5315.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]] (Tier0)
-129 (-43.43 % of base) : 6607.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
-240 (-43.01 % of base) : 5423.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-288 (-42.99 % of base) : 684.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
-288 (-42.99 % of base) : 171.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-147 (-42.86 % of base) : 17005.dasm - System.Linq.ImmutableArrayExtensions:Last[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.__Canon (Tier0)
-234 (-42.39 % of base) : 16241.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
-81 (-42.19 % of base) : 9268.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] (Tier0)
-81 (-42.19 % of base) : 7160.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] (Tier0)
-403 (-42.07 % of base) : 164.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)
-129 (-41.88 % of base) : 9153.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-81 (-41.75 % of base) : 5781.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int] (Tier0)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 830863 (overridden on cmd)
Total bytes of diff: 824093 (overridden on cmd)
Total bytes of delta: -6770 (-0.81 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
67 : 6339.dasm (10.55 % of base)
62 : 4121.dasm (6.49 % of base)
61 : 9902.dasm (10.23 % of base)
50 : 4898.dasm (2.76 % of base)
46 : 817.dasm (19.91 % of base)
39 : 2904.dasm (13.78 % of base)
38 : 6652.dasm (18.01 % of base)
26 : 10369.dasm (5.74 % of base)
25 : 9909.dasm (5.38 % of base)
23 : 10934.dasm (9.47 % of base)
21 : 8572.dasm (25.61 % of base)
18 : 1432.dasm (19.15 % of base)
17 : 68.dasm (6.23 % of base)
14 : 6065.dasm (20.90 % of base)
8 : 5466.dasm (6.25 % of base)
8 : 2909.dasm (0.89 % of base)
8 : 9616.dasm (4.68 % of base)
7 : 2365.dasm (3.27 % of base)
3 : 5464.dasm (3.00 % of base)
2 : 11078.dasm (3.23 % of base)
Top file improvements (bytes):
-327 : 9890.dasm (-26.76 % of base)
-303 : 981.dasm (-26.46 % of base)
-280 : 10549.dasm (-9.94 % of base)
-276 : 3065.dasm (-26.11 % of base)
-225 : 2986.dasm (-7.70 % of base)
-181 : 9.dasm (-31.92 % of base)
-179 : 3424.dasm (-12.43 % of base)
-171 : 12.dasm (-33.08 % of base)
-156 : 454.dasm (-25.00 % of base)
-153 : 3315.dasm (-29.82 % of base)
-151 : 66.dasm (-24.04 % of base)
-151 : 3072.dasm (-19.53 % of base)
-151 : 738.dasm (-20.41 % of base)
-143 : 8533.dasm (-36.20 % of base)
-128 : 8568.dasm (-15.22 % of base)
-111 : 485.dasm (-20.63 % of base)
-111 : 467.dasm (-20.15 % of base)
-109 : 3425.dasm (-32.63 % of base)
-103 : 843.dasm (-27.47 % of base)
-94 : 6050.dasm (-15.59 % of base)
56 total files with Code Size differences (36 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
67 (10.55 % of base) : 6339.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)
62 (6.49 % of base) : 4121.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 (10.23 % of base) : 9902.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
50 (2.76 % of base) : 4898.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
46 (19.91 % of base) : 817.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
39 (13.78 % of base) : 2904.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)
38 (18.01 % 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)
26 (5.74 % of base) : 10369.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
25 (5.38 % of base) : 9909.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
23 (9.47 % of base) : 10934.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
21 (25.61 % of base) : 8572.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
18 (19.15 % of base) : 1432.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
17 (6.23 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
14 (20.90 % of base) : 6065.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
8 (4.68 % of base) : 9616.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
8 (6.25 % of base) : 5466.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 (0.89 % of base) : 2909.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
7 (3.27 % of base) : 2365.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)
3 (3.00 % of base) : 5464.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)
2 (3.23 % of base) : 11078.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
Top method improvements (bytes):
-327 (-26.76 % of base) : 9890.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)
-303 (-26.46 % of base) : 981.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)
-280 (-9.94 % of base) : 10549.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
-276 (-26.11 % of base) : 3065.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)
-225 (-7.70 % of base) : 2986.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-181 (-31.92 % 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)
-179 (-12.43 % of base) : 3424.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)
-171 (-33.08 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-156 (-25.00 % of base) : 454.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-153 (-29.82 % of base) : 3315.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-151 (-19.53 % of base) : 3072.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)
-151 (-20.41 % of base) : 738.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)
-151 (-24.04 % 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)
-143 (-36.20 % of base) : 8533.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-128 (-15.22 % of base) : 8568.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)
-111 (-20.15 % of base) : 467.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-111 (-20.63 % of base) : 485.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)
-109 (-32.63 % of base) : 3425.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-103 (-27.47 % of base) : 843.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-94 (-15.59 % of base) : 6050.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)
Top method regressions (percentages):
21 (25.61 % of base) : 8572.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
14 (20.90 % of base) : 6065.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
46 (19.91 % of base) : 817.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
18 (19.15 % of base) : 1432.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
38 (18.01 % 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)
39 (13.78 % of base) : 2904.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)
67 (10.55 % of base) : 6339.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)
61 (10.23 % of base) : 9902.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
23 (9.47 % of base) : 10934.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
62 (6.49 % of base) : 4121.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 (6.25 % of base) : 5466.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)
17 (6.23 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
26 (5.74 % of base) : 10369.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
25 (5.38 % of base) : 9909.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
8 (4.68 % of base) : 9616.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
7 (3.27 % of base) : 2365.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)
2 (3.23 % of base) : 11078.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
3 (3.00 % of base) : 5464.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)
50 (2.76 % of base) : 4898.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
8 (0.89 % of base) : 2909.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
Top method improvements (percentages):
-28 (-45.90 % of base) : 2137.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-143 (-36.20 % of base) : 8533.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-28 (-35.44 % of base) : 168.dasm - <PrivateImplementationDetails>:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 69.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 4831.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedExchange[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 6936.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:SelectAsArray[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 2117.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-28 (-34.57 % of base) : 5300.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-28 (-34.57 % of base) : 5333.dasm - System.Linq.Expressions.Expression:Lambda[System.__Canon](System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression[]):System.Linq.Expressions.Expression`1[System.__Canon] (FullOpts)
-171 (-33.08 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-109 (-32.63 % of base) : 3425.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-28 (-32.56 % of base) : 2375.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.__Canon](int):System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon] (FullOpts)
-28 (-32.18 % of base) : 3185.dasm - Microsoft.VisualStudio.Composition.ExportProvider:GetExports[System.__Canon,System.__Canon](System.String):System.Collections.Generic.IEnumerable`1[System.__Canon]:this (FullOpts)
-24 (-32.00 % of base) : 5292.dasm - System.Linq.Enumerable:SingleOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-181 (-31.92 % 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)
-21 (-31.82 % of base) : 4651.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-21 (-31.82 % of base) : 7236.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-21 (-30.88 % of base) : 3712.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-64 (-30.48 % of base) : 5898.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
-21 (-30.00 % of base) : 4709.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 linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1403564 (overridden on cmd)
Total bytes of diff: 1390099 (overridden on cmd)
Total bytes of delta: -13465 (-0.96 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
164 : 12552.dasm (176.34 % of base)
160 : 12608.dasm (15.09 % of base)
159 : 1386.dasm (3.58 % of base)
159 : 12079.dasm (124.22 % of base)
135 : 12474.dasm (64.90 % of base)
131 : 1352.dasm (38.08 % of base)
117 : 6303.dasm (16.25 % of base)
98 : 12351.dasm (42.06 % of base)
91 : 1121.dasm (73.98 % of base)
83 : 11988.dasm (38.07 % of base)
79 : 12243.dasm (40.51 % of base)
62 : 12585.dasm (92.54 % of base)
54 : 14656.dasm (42.52 % of base)
50 : 12168.dasm (34.48 % of base)
50 : 13913.dasm (56.18 % of base)
50 : 14653.dasm (49.02 % of base)
50 : 10449.dasm (23.04 % of base)
50 : 14784.dasm (2.16 % of base)
49 : 13956.dasm (20.33 % of base)
46 : 4750.dasm (158.62 % of base)
Top file improvements (bytes):
-298 : 9705.dasm (-28.54 % of base)
-272 : 3342.dasm (-26.20 % of base)
-184 : 8970.dasm (-28.44 % of base)
-181 : 240.dasm (-31.92 % of base)
-174 : 7625.dasm (-23.97 % of base)
-174 : 6138.dasm (-23.32 % of base)
-172 : 5219.dasm (-12.30 % of base)
-171 : 743.dasm (-33.08 % of base)
-159 : 13016.dasm (-24.09 % of base)
-156 : 244.dasm (-25.00 % of base)
-151 : 14441.dasm (-20.41 % of base)
-151 : 701.dasm (-24.04 % of base)
-148 : 5016.dasm (-22.02 % of base)
-147 : 8344.dasm (-24.83 % of base)
-140 : 5321.dasm (-27.94 % of base)
-139 : 9704.dasm (-19.74 % of base)
-125 : 10033.dasm (-24.80 % of base)
-121 : 9427.dasm (-5.24 % of base)
-119 : 7820.dasm (-18.17 % of base)
-119 : 7477.dasm (-24.74 % of base)
66 total files with Code Size differences (41 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
164 (176.34 % of base) : 12552.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32:Pack(byref):this (FullOpts)
160 (15.09 % of base) : 12608.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.TransformUtils:GetTransformedRectangle(SixLabors.ImageSharp.Rectangle,System.Numerics.Matrix3x2):SixLabors.ImageSharp.Rectangle (FullOpts)
159 (3.58 % of base) : 1386.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
159 (124.22 % of base) : 12079.dasm - SixLabors.ImageSharp.SimdUtils+FallbackIntrinsics128:NormalizedFloatToByteSaturate(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
135 (64.90 % of base) : 12474.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
131 (38.08 % of base) : 1352.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
117 (16.25 % of base) : 6303.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)
98 (42.06 % of base) : 12351.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
91 (73.98 % of base) : 1121.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
83 (38.07 % of base) : 11988.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
79 (40.51 % of base) : 12243.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
62 (92.54 % of base) : 12585.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
54 (42.52 % of base) : 14656.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
50 (23.04 % of base) : 10449.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
50 (34.48 % of base) : 12168.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
50 (2.16 % of base) : 14784.dasm - System.Net.Http.HttpConnectionPool+<AddHttp11ConnectionAsync>d__79:MoveNext():this (FullOpts)
50 (49.02 % of base) : 14653.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
50 (56.18 % of base) : 13913.dasm - System.Threading.Tasks.Dataflow.Internal.Common:IsValidTimeout(System.TimeSpan):ubyte (FullOpts)
49 (20.33 % of base) : 13956.dasm - Microsoft.ML.Internal.Utilities.MathUtils:SigmoidFast(float):float (FullOpts)
46 (158.62 % of base) : 4750.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
Top method improvements (bytes):
-298 (-28.54 % of base) : 9705.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)
-272 (-26.20 % of base) : 3342.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)
-184 (-28.44 % of base) : 8970.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)
-181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-174 (-23.32 % of base) : 6138.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)
-174 (-23.97 % of base) : 7625.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)
-172 (-12.30 % of base) : 5219.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)
-171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-159 (-24.09 % of base) : 13016.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-156 (-25.00 % of base) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-20.41 % of base) : 14441.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)
-151 (-24.04 % of base) : 701.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.02 % of base) : 5016.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)
-147 (-24.83 % of base) : 8344.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 (-27.94 % of base) : 5321.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)
-139 (-19.74 % of base) : 9704.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)
-125 (-24.80 % of base) : 10033.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)
-121 (-5.24 % of base) : 9427.dasm - FSharp.Compiler.CheckExpressions:AnalyzeRecursiveStaticMemberOrValDecl[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,FSharp.Compiler.Syntax.Ident](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,System.__Canon,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.CheckExpressions+OverridesOK,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+MemberOrValContainerInfo],Microsoft.FSharp.Core.FSharpOption`1[System.__Canon],FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],FSharp.Compiler.Syntax.SynValInfo,FSharp.Compiler.TypedTree+TType,System.__Canon,FSharp.Compiler.Text.Range,System.__Canon):System.Tuple`8[System.__Canon,System.__Canon,FSharp.Compiler.Syntax.Ident,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
-119 (-18.17 % of base) : 7820.dasm - FSharp.Compiler.InfoReader:GetMostSpecificItemsByType[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-119 (-24.74 % of base) : 7477.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)
Top method regressions (percentages):
164 (176.34 % of base) : 12552.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32:Pack(byref):this (FullOpts)
46 (158.62 % of base) : 4750.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
159 (124.22 % of base) : 12079.dasm - SixLabors.ImageSharp.SimdUtils+FallbackIntrinsics128:NormalizedFloatToByteSaturate(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
45 (118.42 % of base) : 12645.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
45 (118.42 % of base) : 12646.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (FullOpts)
62 (92.54 % of base) : 12585.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
45 (84.91 % of base) : 835.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
91 (73.98 % of base) : 1121.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
45 (68.18 % of base) : 12348.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:CalculatePaletteSpread(int):int (FullOpts)
135 (64.90 % of base) : 12474.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
45 (57.69 % of base) : 3228.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)
50 (56.18 % of base) : 13913.dasm - System.Threading.Tasks.Dataflow.Internal.Common:IsValidTimeout(System.TimeSpan):ubyte (FullOpts)
50 (49.02 % of base) : 14653.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
54 (42.52 % of base) : 14656.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
98 (42.06 % of base) : 12351.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
79 (40.51 % of base) : 12243.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
131 (38.08 % of base) : 1352.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
83 (38.07 % of base) : 11988.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
50 (34.48 % of base) : 12168.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
50 (23.04 % of base) : 10449.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
Top method improvements (percentages):
-28 (-45.90 % of base) : 11278.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 12044.dasm - <PrivateImplementationDetails>:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 12028.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 5801.dasm - Microsoft.FSharp.Collections.ListModule:Choose[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)
-28 (-35.44 % of base) : 2850.dasm - Microsoft.FSharp.Collections.ListModule:Collect[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)
-28 (-35.44 % of base) : 5003.dasm - Microsoft.FSharp.Collections.ListModule:Exists[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):ubyte (FullOpts)
-28 (-35.44 % of base) : 2966.dasm - Microsoft.FSharp.Collections.ListModule:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 6228.dasm - Microsoft.FSharp.Collections.ListModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):ubyte (FullOpts)
-28 (-35.44 % of base) : 5569.dasm - Microsoft.FSharp.Collections.ListModule:Initialize[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-28 (-35.44 % of base) : 2968.dasm - Microsoft.FSharp.Collections.ListModule:Map[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)
-28 (-35.44 % of base) : 2964.dasm - Microsoft.FSharp.Collections.ListModule:MapIndexed[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] (FullOpts)
-28 (-35.44 % of base) : 7754.dasm - Microsoft.FSharp.Collections.ListModule: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)
-28 (-35.44 % of base) : 6492.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-28 (-34.57 % of base) : 9195.dasm - FSharp.Compiler.ErrorLogger:IterateIdxD[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-28 (-33.33 % of base) : 8139.dasm - Microsoft.FSharp.Collections.MapModule:Find[System.__Canon,System.__Canon](System.__Canon,Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-28 (-33.33 % of base) : 6222.dasm - Microsoft.FSharp.Collections.MapModule:TryFind[System.__Canon,System.__Canon](System.__Canon,Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)
-171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-66 (-32.20 % of base) : 5317.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-54 (-31.95 % of base) : 8601.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)
-181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Diffs are based on 78,929 contexts (41,462 MinOpts, 37,467 FullOpts).
MISSED contexts: base: 2,856 (2.27%), diff: 43,225 (34.38%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.osx.arm64.checked.mch | 1,051,784 | -5,840 |
benchmarks.run_pgo.osx.arm64.checked.mch | 2,496,932 | -18,464 |
benchmarks.run_tiered.osx.arm64.checked.mch | 2,306,432 | -17,176 |
coreclr_tests.run.osx.arm64.checked.mch | 188,056 | -112 |
libraries.pmi.osx.arm64.checked.mch | 1,221,828 | -4,004 |
libraries_tests.run.osx.arm64.Release.mch | 2,206,820 | -22,728 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 1,036,932 | -7,204 |
realworld.run.osx.arm64.checked.mch | 1,633,176 | -17,236 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.osx.arm64.checked.mch | 2,239,532 | -16,808 |
benchmarks.run_tiered.osx.arm64.checked.mch | 2,102,732 | -16,288 |
libraries_tests.run.osx.arm64.Release.mch | 2,194,452 | -22,544 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.osx.arm64.checked.mch | 1,051,360 | -5,840 |
benchmarks.run_pgo.osx.arm64.checked.mch | 257,400 | -1,656 |
benchmarks.run_tiered.osx.arm64.checked.mch | 203,700 | -888 |
coreclr_tests.run.osx.arm64.checked.mch | 188,056 | -112 |
libraries.pmi.osx.arm64.checked.mch | 1,221,828 | -4,004 |
libraries_tests.run.osx.arm64.Release.mch | 12,368 | -184 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 1,036,932 | -7,204 |
realworld.run.osx.arm64.checked.mch | 1,633,076 | -17,236 |
@@ -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,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
@@ -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)
@@ -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, #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_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, #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_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, #1 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, #1 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)
@@ -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, #1 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, #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.__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, #1 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, #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.__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, #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.__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_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[] (FullOpts)+; 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[] (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, #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)
@@ -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)
@@ -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,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:
@@ -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,T04] ( 3, 2.73) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-; V01 TypeCtx [V01,T01] ( 5, 3.87) long -> x1 single-def
-; V02 arg1 [V02,T03] ( 4, 3.73) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 7, 5.91) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V00 this [V00,T04] ( 3, 2.73) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+; V01 TypeCtx [V01,T00] ( 5, 4.45) long -> x19 single-def
+; V02 arg1 [V02,T03] ( 4, 3.73) byref -> x20 single-def
+; V03 loc0 [V03,T01] ( 7, 5.91) 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,T02] ( 4, 5.82) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T02] ( 4, 5.82) 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.91) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 4.07) 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.73, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz+G_M58319_IG03: ; bbWeight=0.73, 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.73 PerfScore 5.09
-G_M58319_IG04: ; bbWeight=0.58, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.58 PerfScore 0.58
-G_M58319_IG05: ; bbWeight=0.15, 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.15 PerfScore 0.44
-G_M58319_IG06: ; bbWeight=0.73, 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.73 PerfScore 5.09
-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.73 PerfScore 9.45
+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 25.70, 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 23.45, 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)
@@ -31,9 +31,11 @@ G_M27986_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
mov w1, #18- 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, #1 LSL #32
ldr x0, [x0]
@@ -67,7 +69,7 @@ G_M27986_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFARRAY movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
@@ -81,7 +83,7 @@ G_M27986_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; 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)
@@ -8,20 +8,15 @@
; 0 inlinees with PGO data; 3 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,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
-; V02 arg1 [V02,T05] ( 3, 3 ) ref -> x21 class-hnd single-def <System.IO.TextWriter>
-; V03 arg2 [V03,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]>+; V00 TypeCtx [V00,T01] ( 5, 5 ) long -> x19 single-def
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.IO.TextWriter>
+; V03 arg2 [V03,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T00] ( 4, 8 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfModule+PrintFormatToTextWriterThen@1432[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,T10] ( 2, 4 ) long -> x0 "argument with side effect"
-; V09 rat0 [V09,T08] ( 3, 4 ) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
-; V11 rat2 [V11,T09] ( 3, 4 ) long -> x0 "runtime lookup"
-; V12 rat3 [V12,T03] ( 3, 5.60) long -> x0 "spilling expr"
-; V13 rat4 [V13,T07] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V08 tmp4 [V08,T05] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -40,24 +35,14 @@ G_M44778_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x22, x3
; gcrRegs +[x22]
;; size=40 bbWeight=1 PerfScore 7.50-G_M44778_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38]
- ldr x0, [x0, #0x18]
- cbz x0, G_M44778_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M44778_IG03: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M44778_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M44778_IG04: ; bbWeight=0.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref+G_M44778_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 ; gcr arg pop 0- ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M44778_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
; gcr arg pop 0
mov x23, x0
@@ -76,27 +61,12 @@ G_M44778_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x21]
; byrRegs -[x14]- ldr x0, [x19, #0x38]
- ldr x1, [x0, #0x10]
- cmp x1, #32
- ble G_M44778_IG08
- ;; size=48 bbWeight=1 PerfScore 13.00
-G_M44778_IG06: ; bbWeight=0.80, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x0, #0x20]
- cbz x0, G_M44778_IG08
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M44778_IG07: ; bbWeight=0.64, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
- b G_M44778_IG09
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M44778_IG08: ; bbWeight=0.36, gcrefRegs=C00000 {x22 x23}, 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 ; gcr arg pop 0- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M44778_IG09: ; bbWeight=1, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref mov x1, x23
; gcrRegs +[x1]
mov x2, x22
@@ -105,8 +75,8 @@ G_M44778_IG09: ; bbWeight=1, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M44778_IG10: ; bbWeight=1, epilog, nogc, extend+ ;; size=96 bbWeight=1 PerfScore 17.00
+G_M44778_IG03: ; bbWeight=1, epilog, nogc, extend ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -115,7 +85,7 @@ G_M44778_IG10: ; bbWeight=1, epilog, nogc, extend
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 200, prolog size 40, PerfScore 45.32, instruction count 50, allocated bytes for code 200 (MethodHash=707d5115) for method Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)+; Total bytes of code 156, prolog size 40, PerfScore 30.50, instruction count 39, allocated bytes for code 156 (MethodHash=707d5115) for method Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts) ; ============================================================
Unwind Info:
@@ -126,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)+ 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)
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 3.60) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 4, 3.50) long -> x0 single-def ; V01 arg0 [V01,T01] ( 3, 2.50) ref -> x19 class-hnd single-def <System.__Canon>
;* V02 arg1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V03 arg2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
@@ -16,21 +16,19 @@
;* V06 arg5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V07 arg6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V08 arg7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>-; V09 arg8 [V09,T05] ( 2, 1.50) int -> x20 single-def+; V09 arg8 [V09,T03] ( 2, 1.50) int -> x20 single-def ;* V10 arg9 [V10 ] ( 0, 0 ) int -> zero-ref single-def
;* V11 arg10 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>-; V12 arg11 [V12,T07] ( 2, 1 ) int -> [fp+0x50] single-def+; V12 arg11 [V12,T05] ( 2, 1 ) int -> [fp+0x50] single-def ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V15 tmp2 [V15,T08] ( 1, 0.50) byref -> [fp+0x40] single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp3 [V16,T06] ( 2, 1.50) int -> x21 single-def "field V11._length (fldOffset=0x8)" P-INDEP
-; V17 tmp4 [V17,T04] ( 2, 2 ) long -> x0 "argument with side effect"
-; V18 rat0 [V18,T03] ( 3, 2 ) long -> x0 "runtime lookup"
-; V19 rat1 [V19,T02] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"+; V15 tmp2 [V15,T06] ( 1, 0.50) byref -> [fp+0x40] single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp3 [V16,T04] ( 2, 1.50) int -> x21 single-def "field V11._length (fldOffset=0x8)" P-INDEP
+; V17 tmp4 [V17,T02] ( 2, 2 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
-G_M56834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG+G_M56834_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -55,24 +53,13 @@ G_M56834_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50-G_M56834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz+G_M56834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x19]- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cbz x2, G_M56834_IG07
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M56834_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x2
- b G_M56834_IG08
- ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M56834_IG07: ; bbWeight=0.10, gcrefRegs=80000 {x19}, 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.10 PerfScore 0.25
-G_M56834_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x4, [fp, #0x40] // [V15 tmp2]
; byrRegs +[x4]
mov w5, w21
@@ -84,8 +71,8 @@ G_M56834_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x6, #0xD1FFAB1E LSL #16
movk x6, #1 LSL #32
ldr x6, [x6]- ;; size=36 bbWeight=0.50 PerfScore 5.00
-G_M56834_IG09: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=52 bbWeight=0.50 PerfScore 6.25
+G_M56834_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -93,7 +80,7 @@ G_M56834_IG09: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 148, prolog size 32, PerfScore 25.85, instruction count 37, allocated bytes for code 148 (MethodHash=fbb821fd) for method Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)+; Total bytes of code 128, prolog size 32, PerfScore 22.75, instruction count 32, allocated bytes for code 128 (MethodHash=fbb821fd) for method Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts) ; ============================================================
Unwind Info:
@@ -104,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 37 (0x00025) Actual length = 148 (0x000094)+ 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)
@@ -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, #1 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, #1 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, #1 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; 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)
@@ -19,28 +19,13 @@ G_M39678_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_M39678_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_M39678_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M39678_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_M39678_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M39678_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M39678_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_M39678_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_M39678_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M39678_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M39678_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=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[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)
1[System.__Canon]:From[System.__Canon](System.Collections.Immutable.ImmutableArray
1[System.Canon]):System.Collections.Immutable.ImmutableArray`1[System.Canon] (Tier0)@@ -19,28 +19,13 @@ G_M49898_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_M49898_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_M49898_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M49898_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_M49898_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M49898_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M49898_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_M49898_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_M49898_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M49898_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M49898_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=a2493d15) for method Microsoft.CodeAnalysis.StaticCast`1[System.__Canon]:From[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=a2493d15) for method Microsoft.CodeAnalysis.StaticCast`1[System.__Canon]:From[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[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)
1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Nullable
1[System.ValueTuple2[Microsoft.CodeAnalysis.Diagnostics.SourceOrAdditionalFile,ubyte]]):System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]:this (Tier0)@@ -121,9 +121,11 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 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, #2 LSL #32
ldr x0, [x0]
@@ -139,7 +141,7 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs +[x0]
; gcr arg pop 0
str x0, [fp, #0x18] // [V15 tmp8]
@@ -148,9 +150,11 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 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, #2 LSL #32
ldr x0, [x0]
@@ -173,7 +177,8 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
mov w1, #0xD1FFAB1E- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
ldr x15, [fp, #0x18] // [V15 tmp8]
; gcrRegs +[x15]
@@ -182,6 +187,7 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x14, #2 LSL #32
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]+ ; byrRegs -[x0] ldr x0, [fp, #0x18] // [V15 tmp8]
; gcrRegs +[x0]
str x0, [fp, #0x30] // [V13 tmp6]
@@ -50,9 +50,11 @@ G_M38504_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
mov w1, #163- 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, #2 LSL #32
ldr x0, [x0]
3[Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken,ubyte],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray
1Microsoft.CodeAnalysis.SyntaxNode@@ -129,9 +129,11 @@ G_M34356_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 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, #2 LSL #32
ldr x0, [x0]
@@ -245,9 +247,11 @@ G_M34356_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 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, #2 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, #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, #2 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, #2 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, #2 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 | 146 | 112 | 5 | 29 | -5,908 | +68 |
benchmarks.run_pgo.osx.arm64.checked.mch | 285 | 244 | 10 | 31 | -18,552 | +88 |
benchmarks.run_tiered.osx.arm64.checked.mch | 255 | 227 | 2 | 26 | -17,200 | +24 |
coreclr_tests.run.osx.arm64.checked.mch | 3 | 3 | 0 | 0 | -112 | +0 |
libraries.crossgen2.osx.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.osx.arm64.checked.mch | 241 | 172 | 47 | 22 | -4,852 | +848 |
libraries_tests.run.osx.arm64.Release.mch | 313 | 298 | 0 | 15 | -22,728 | +0 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 188 | 136 | 15 | 37 | -7,572 | +368 |
realworld.run.osx.arm64.checked.mch | 358 | 323 | 14 | 21 | -17,644 | +408 |
1,789 | 1,515 | 93 | 181 | -94,568 | +1,804 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 5,141 | 3 | 5,138 | 503 (4.26%) | 6,268 (53.09%) |
benchmarks.run_pgo.osx.arm64.checked.mch | 16,662 | 15,003 | 1,659 | 53 (0.22%) | 6,794 (28.48%) |
benchmarks.run_tiered.osx.arm64.checked.mch | 15,026 | 13,361 | 1,665 | 83 (0.39%) | 5,629 (26.74%) |
coreclr_tests.run.osx.arm64.checked.mch | 608 | 3 | 605 | 124 (1.85%) | 5,692 (85.01%) |
libraries.crossgen2.osx.arm64.checked.mch | 2,218 | 0 | 2,218 | 0 (0.00%) | 1,317 (33.50%) |
libraries.pmi.osx.arm64.checked.mch | 11,774 | 0 | 11,774 | 170 (1.04%) | 4,139 (25.37%) |
libraries_tests.run.osx.arm64.Release.mch | 13,183 | 13,091 | 92 | 15 (0.08%) | 4,296 (24.03%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 5,329 | 0 | 5,329 | 921 (9.24%) | 4,241 (42.55%) |
realworld.run.osx.arm64.checked.mch | 8,988 | 1 | 8,987 | 987 (6.93%) | 4,849 (34.07%) |
78,929 | 41,462 | 37,467 | 2,856 (2.27%) | 43,225 (34.38%) |
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: 1051784 (overridden on cmd)
Total bytes of diff: 1045944 (overridden on cmd)
Total bytes of delta: -5840 (-0.56 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
36 : 6115.dasm (3.83 % of base)
20 : 1546.dasm (6.25 % of base)
4 : 12295.dasm (4.55 % of base)
4 : 12387.dasm (5.56 % of base)
4 : 1082.dasm (4.55 % of base)
Top file improvements (bytes):
-328 : 3639.dasm (-23.98 % of base)
-212 : 233.dasm (-30.99 % of base)
-212 : 730.dasm (-33.12 % of base)
-208 : 7002.dasm (-15.76 % of base)
-184 : 688.dasm (-26.14 % of base)
-184 : 237.dasm (-24.34 % of base)
-156 : 5768.dasm (-29.32 % of base)
-144 : 1773.dasm (-15.06 % of base)
-136 : 2386.dasm (-30.63 % of base)
-132 : 5583.dasm (-19.30 % of base)
-128 : 1844.dasm (-27.12 % of base)
-128 : 7206.dasm (-25.81 % of base)
-128 : 626.dasm (-18.71 % of base)
-100 : 6290.dasm (-24.04 % of base)
-100 : 7691.dasm (-20.49 % of base)
-100 : 202.dasm (-19.84 % of base)
-92 : 2312.dasm (-22.12 % of base)
-76 : 4094.dasm (-18.27 % of base)
-72 : 236.dasm (-24.00 % of base)
-72 : 7103.dasm (-23.38 % of base)
48 total files with Code Size differences (43 improved, 5 regressed), 25 unchanged.
Top method regressions (bytes):
36 (3.83 % of base) : 6115.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
20 (6.25 % of base) : 1546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
4 (4.55 % of base) : 1082.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (5.56 % of base) : 12387.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
4 (4.55 % of base) : 12295.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
Top method improvements (bytes):
-328 (-23.98 % of base) : 3639.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) : 730.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-15.76 % of base) : 7002.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) : 688.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) : 5768.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) : 1773.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) : 2386.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.30 % of base) : 5583.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) : 1844.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) : 7206.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-128 (-18.71 % of base) : 626.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-20.49 % of base) : 7691.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-100 (-24.04 % of base) : 6290.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) : 2312.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
-76 (-18.27 % of base) : 4094.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) : 11333.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)
-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)
Top method regressions (percentages):
20 (6.25 % of base) : 1546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
4 (5.56 % of base) : 12387.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
4 (4.55 % of base) : 1082.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
4 (4.55 % of base) : 12295.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
36 (3.83 % of base) : 6115.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 730.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) : 11170.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 2386.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-156 (-29.32 % of base) : 5768.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) : 1844.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) : 7606.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-184 (-26.14 % of base) : 688.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) : 7206.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-72 (-25.00 % of base) : 901.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) : 2917.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-44 (-24.44 % of base) : 7333.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-44 (-24.44 % of base) : 1504.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) : 6290.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) : 3639.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) : 3147.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-72 (-23.38 % of base) : 7103.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) : 6032.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: 2496932 (overridden on cmd)
Total bytes of diff: 2478468 (overridden on cmd)
Total bytes of delta: -18464 (-0.74 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
16 : 10550.dasm (10.53 % of base)
8 : 2129.dasm (5.88 % of base)
8 : 21396.dasm (6.06 % of base)
8 : 21683.dasm (6.06 % of base)
8 : 22892.dasm (6.06 % of base)
8 : 6941.dasm (6.06 % of base)
8 : 9897.dasm (6.06 % of base)
8 : 10012.dasm (6.06 % of base)
8 : 17149.dasm (6.06 % of base)
8 : 20488.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 4420.dasm (-43.85 % of base)
-428 : 624.dasm (-41.96 % of base)
-372 : 4382.dasm (-37.35 % of base)
-372 : 630.dasm (-35.36 % of base)
-332 : 20842.dasm (-28.92 % of base)
-316 : 8948.dasm (-37.44 % of base)
-316 : 9520.dasm (-38.54 % of base)
-296 : 11531.dasm (-38.14 % of base)
-260 : 11156.dasm (-40.37 % of base)
-260 : 4285.dasm (-27.66 % of base)
-260 : 7268.dasm (-35.71 % of base)
-260 : 9555.dasm (-39.88 % of base)
-240 : 266.dasm (-32.97 % of base)
-212 : 22492.dasm (-33.12 % of base)
-212 : 7321.dasm (-33.12 % of base)
-204 : 552.dasm (-30.18 % of base)
-204 : 7593.dasm (-23.50 % of base)
-204 : 8891.dasm (-32.28 % of base)
-204 : 9539.dasm (-32.69 % of base)
-204 : 9545.dasm (-30.00 % of base)
60 total files with Code Size differences (50 improved, 10 regressed), 26 unchanged.
Top method regressions (bytes):
16 (10.53 % of base) : 10550.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (5.88 % of base) : 2129.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21683.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22892.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6941.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9897.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 10012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 17149.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 20488.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) : 4420.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 (-37.35 % of base) : 4382.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) : 20842.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) : 9520.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) : 8948.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-38.14 % of base) : 11531.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) : 9555.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) : 11156.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) : 7268.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 4285.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 266.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 22492.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 7321.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-32.28 % of base) : 8891.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 9545.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-23.50 % of base) : 7593.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
-204 (-32.69 % of base) : 9539.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) : 10550.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 21396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 21683.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22892.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6941.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 9897.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 10012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 17149.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 20488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (5.88 % of base) : 2129.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) : 4420.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) : 22040.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 11156.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) : 9555.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) : 17060.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-38.98 % of base) : 8199.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-316 (-38.54 % of base) : 9520.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) : 8767.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-38.33 % of base) : 7976.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 6521.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-296 (-38.14 % of base) : 11531.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) : 8948.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-372 (-37.35 % of base) : 4382.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) : 4406.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) : 9519.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) : 11280.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 7639.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) : 9341.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) : 7637.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 osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2306432 (overridden on cmd)
Total bytes of diff: 2289256 (overridden on cmd)
Total bytes of delta: -17176 (-0.74 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
16 : 13939.dasm (10.53 % of base)
8 : 2696.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 624.dasm (-41.96 % of base)
-428 : 1897.dasm (-43.85 % of base)
-372 : 630.dasm (-35.36 % of base)
-372 : 1824.dasm (-36.19 % of base)
-316 : 15981.dasm (-37.44 % of base)
-316 : 3703.dasm (-38.54 % of base)
-296 : 11208.dasm (-39.78 % of base)
-260 : 1687.dasm (-27.66 % of base)
-260 : 3349.dasm (-35.71 % of base)
-260 : 10847.dasm (-40.37 % of base)
-260 : 4245.dasm (-39.88 % of base)
-240 : 265.dasm (-32.97 % of base)
-212 : 3366.dasm (-33.12 % of base)
-204 : 17899.dasm (-25.25 % of base)
-204 : 4249.dasm (-32.69 % of base)
-204 : 9155.dasm (-23.50 % of base)
-204 : 14699.dasm (-30.00 % of base)
-204 : 17052.dasm (-32.28 % of base)
-204 : 552.dasm (-30.18 % of base)
-184 : 1881.dasm (-30.87 % of base)
52 total files with Code Size differences (50 improved, 2 regressed), 26 unchanged.
Top method regressions (bytes):
16 (10.53 % of base) : 13939.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 2696.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) : 1897.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) : 1824.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) : 3703.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) : 15981.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 11208.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) : 4245.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) : 10847.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) : 3349.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1687.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) : 3366.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-25.25 % of base) : 17899.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
-204 (-32.28 % of base) : 17052.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 14699.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-23.50 % of base) : 9155.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
-204 (-32.69 % of base) : 4249.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) : 1881.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) : 13939.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
8 (6.06 % of base) : 2696.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) : 1897.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) : 18603.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 10847.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) : 4245.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) : 11208.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) : 3806.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-38.98 % of base) : 16537.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-316 (-38.54 % of base) : 3703.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) : 16935.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-38.33 % of base) : 13455.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 4866.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-316 (-37.44 % of base) : 15981.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-148 (-37.00 % of base) : 1883.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) : 3702.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) : 10961.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 9372.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) : 12677.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) : 5231.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) : 1824.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: 188056 (overridden on cmd)
Total bytes of diff: 187944 (overridden on cmd)
Total bytes of delta: -112 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-48 : 271.dasm (-9.84 % of base)
-44 : 19913.dasm (-22.00 % of base)
-20 : 19873.dasm (-13.51 % of base)
3 total files with Code Size differences (3 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-48 (-9.84 % of base) : 271.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 (-22.00 % of base) : 19913.dasm - Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-20 (-13.51 % of base) : 19873.dasm - Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)
Top method improvements (percentages):
-44 (-22.00 % of base) : 19913.dasm - Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
-20 (-13.51 % of base) : 19873.dasm - Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)
-48 (-9.84 % of base) : 271.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
3 total methods with Code Size differences (3 improved, 0 regressed).
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: 1221828 (overridden on cmd)
Total bytes of diff: 1217824 (overridden on cmd)
Total bytes of delta: -4004 (-0.33 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
80 : 11820.dasm (29.85 % of base)
68 : 11832.dasm (27.87 % of base)
68 : 7037.dasm (35.42 % of base)
68 : 7057.dasm (35.42 % of base)
60 : 7041.dasm (25.86 % of base)
60 : 7059.dasm (25.86 % of base)
52 : 7035.dasm (39.39 % of base)
52 : 7055.dasm (39.39 % of base)
40 : 7043.dasm (17.24 % of base)
32 : 6678.dasm (11.76 % of base)
24 : 8522.dasm (5.66 % of base)
24 : 6676.dasm (10.71 % of base)
24 : 7061.dasm (17.14 % of base)
24 : 8515.dasm (5.41 % of base)
20 : 6680.dasm (6.58 % of base)
16 : 11786.dasm (9.76 % of base)
8 : 8508.dasm (2.17 % of base)
8 : 7039.dasm (5.56 % of base)
8 : 8501.dasm (2.13 % of base)
4 : 4093.dasm (5.56 % of base)
Top file improvements (bytes):
-108 : 11782.dasm (-25.47 % of base)
-108 : 11980.dasm (-25.47 % of base)
-80 : 7750.dasm (-23.81 % of base)
-72 : 11874.dasm (-13.95 % of base)
-72 : 11904.dasm (-13.95 % of base)
-72 : 11855.dasm (-13.95 % of base)
-72 : 11884.dasm (-13.95 % of base)
-72 : 11894.dasm (-13.95 % of base)
-72 : 7092.dasm (-19.35 % of base)
-68 : 11994.dasm (-19.54 % of base)
-64 : 1415.dasm (-11.03 % of base)
-60 : 11880.dasm (-14.15 % of base)
-60 : 11890.dasm (-14.15 % of base)
-60 : 11892.dasm (-14.15 % of base)
-60 : 11902.dasm (-14.15 % of base)
-60 : 93.dasm (-14.15 % of base)
-60 : 11863.dasm (-14.15 % of base)
-60 : 11882.dasm (-14.15 % of base)
-60 : 11900.dasm (-14.15 % of base)
-60 : 11910.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) : 11820.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) : 7057.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7037.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
68 (27.87 % of base) : 11832.dasm - System.Numerics.Vector:CreateSequence[System.__Canon](System.__Canon,System.__Canon):System.Numerics.Vector`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7059.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7041.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
52 (39.39 % of base) : 7055.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
52 (39.39 % of base) : 7035.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
40 (17.24 % of base) : 7043.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
32 (11.76 % of base) : 6678.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
24 (10.71 % of base) : 6676.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
24 (17.14 % of base) : 7061.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
24 (5.41 % of base) : 8515.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
24 (5.66 % of base) : 8522.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
20 (6.58 % of base) : 6680.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
16 (9.76 % of base) : 11786.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) : 7039.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
8 (2.13 % of base) : 8501.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
8 (2.17 % of base) : 8508.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
4 (5.56 % of base) : 4093.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
Top method improvements (bytes):
-108 (-25.47 % of base) : 11782.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) : 11980.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) : 7750.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
-72 (-19.35 % of base) : 7092.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) : 11855.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) : 11874.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) : 11884.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) : 11894.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) : 11904.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) : 11994.dasm - System.Numerics.Vector:Sum[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
-64 (-11.03 % of base) : 1415.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) : 11863.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) : 11880.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) : 11882.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) : 11890.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) : 11892.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) : 11900.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) : 11902.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) : 11910.dasm - System.Numerics.Vector:LessThanOrEqualAll[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) : 7055.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
52 (39.39 % of base) : 7035.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7057.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
68 (35.42 % of base) : 7037.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
80 (29.85 % of base) : 11820.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 (27.87 % of base) : 11832.dasm - System.Numerics.Vector:CreateSequence[System.__Canon](System.__Canon,System.__Canon):System.Numerics.Vector`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7059.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
60 (25.86 % of base) : 7041.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
40 (17.24 % of base) : 7043.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
24 (17.14 % of base) : 7061.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
32 (11.76 % of base) : 6678.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
24 (10.71 % of base) : 6676.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
16 (9.76 % of base) : 11786.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) : 6680.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
24 (5.66 % of base) : 8522.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
4 (5.56 % of base) : 4093.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
4 (5.56 % of base) : 4143.dasm - System.Convert:ToByte(System.Object):ubyte (FullOpts)
4 (5.56 % of base) : 4109.dasm - System.Convert:ToChar(System.Object):ushort (FullOpts)
4 (5.56 % of base) : 4284.dasm - System.Convert:ToDouble(System.Object):double (FullOpts)
4 (5.56 % of base) : 4160.dasm - System.Convert:ToInt16(System.Object):short (FullOpts)
Top method improvements (percentages):
-24 (-27.27 % of base) : 10387.dasm - System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)
-44 (-26.19 % of base) : 12001.dasm - System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
-108 (-25.47 % of base) : 11782.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) : 11980.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) : 11920.dasm - System.Numerics.Vector:LoadUnsafe[System.__Canon](byref):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-24 (-25.00 % of base) : 10394.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) : 10509.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) : 1209.dasm - System.Array:AsReadOnly[System.__Canon](System.__Canon[]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-24 (-24.00 % of base) : 2281.dasm - System.GC:AllocateArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
-24 (-24.00 % of base) : 11788.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) : 11351.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
-80 (-23.81 % of base) : 7750.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
-20 (-22.73 % of base) : 11914.dasm - System.Numerics.Vector:Load[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-20 (-22.73 % of base) : 11918.dasm - System.Numerics.Vector:LoadAlignedNonTemporal[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
-20 (-22.73 % of base) : 10507.dasm - System.TupleExtensions:ToTuple[System.__Canon](System.ValueTuple`1[System.__Canon]):System.Tuple`1[System.__Canon] (FullOpts)
-20 (-22.73 % of base) : 10503.dasm - System.TupleExtensions:ToValueTuple[System.__Canon](System.Tuple`1[System.__Canon]):System.ValueTuple`1[System.__Canon] (FullOpts)
-52 (-22.41 % of base) : 7106.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
-52 (-22.41 % of base) : 7065.dasm - System.MemoryExtensions:Overlaps[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (FullOpts)
-44 (-21.57 % of base) : 7063.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts)
-24 (-21.43 % of base) : 11922.dasm - System.Numerics.Vector:LoadUnsafe[System.__Canon](byref,ulong):System.Numerics.Vector`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: 2206820 (overridden on cmd)
Total bytes of diff: 2184092 (overridden on cmd)
Total bytes of delta: -22728 (-1.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-428 : 17.dasm (-41.96 % of base)
-428 : 22.dasm (-43.85 % of base)
-372 : 112.dasm (-36.19 % of base)
-372 : 946.dasm (-35.36 % of base)
-296 : 1549.dasm (-39.78 % of base)
-260 : 118.dasm (-40.37 % of base)
-260 : 14699.dasm (-39.88 % of base)
-260 : 2065.dasm (-43.92 % of base)
-260 : 4524.dasm (-40.88 % of base)
-260 : 974.dasm (-27.66 % of base)
-240 : 16347.dasm (-37.27 % of base)
-240 : 18149.dasm (-27.65 % of base)
-240 : 6563.dasm (-32.97 % of base)
-204 : 3903.dasm (-34.46 % of base)
-204 : 11410.dasm (-17.65 % of base)
-204 : 11110.dasm (-30.00 % of base)
-204 : 1189.dasm (-30.18 % of base)
-204 : 12618.dasm (-19.10 % of base)
-200 : 18756.dasm (-36.50 % of base)
-184 : 989.dasm (-31.72 % of base)
61 total files with Code Size differences (61 improved, 0 regressed), 15 unchanged.
Top method improvements (bytes):
-428 (-41.96 % of base) : 17.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) : 22.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-35.36 % of base) : 946.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-36.19 % of base) : 112.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)
-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.88 % of base) : 4524.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 118.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) : 974.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-260 (-39.88 % of base) : 14699.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
-260 (-43.92 % of base) : 2065.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-240 (-27.65 % of base) : 18149.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 (Tier0)
-240 (-37.27 % of base) : 16347.dasm - Microsoft.CodeAnalysis.UnionCollection`1[System.__Canon]:Create[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (Tier0)
-240 (-32.97 % of base) : 6563.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
-204 (-19.10 % of base) : 12618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (Tier0)
-204 (-17.65 % of base) : 11410.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 (Tier0)
-204 (-30.00 % of base) : 11110.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
-204 (-34.46 % of base) : 3903.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-30.18 % of base) : 1189.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-200 (-36.50 % of base) : 18756.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+TupleExtraData:<EqualsIgnoringTupleUnderlyingType>g__areEqual|20_0[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier0)
-184 (-31.72 % of base) : 989.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 improvements (percentages):
-260 (-43.92 % of base) : 2065.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-428 (-43.85 % of base) : 22.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 17.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-41.57 % of base) : 9814.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
-148 (-41.57 % of base) : 7720.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-148 (-41.11 % of base) : 6491.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
-92 (-41.07 % of base) : 12097.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
-92 (-41.07 % of base) : 4391.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]] (Tier0)
-260 (-40.88 % of base) : 4524.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 118.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-148 (-40.22 % of base) : 9872.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-148 (-40.22 % of base) : 7350.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 (Tier0)
-260 (-39.88 % of base) : 14699.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
-148 (-39.78 % of base) : 12645.dasm - System.Collections.Immutable.ImmutableList:IndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (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) : 3.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-39.66 % of base) : 5715.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):System.__Canon (Tier0)
-92 (-39.66 % of base) : 13855.dasm - Roslyn.Utilities.EnumerableExtensions:Transpose[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IList`1[System.__Canon] (Tier0)
-92 (-39.66 % of base) : 15970.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier0)
-92 (-39.66 % of base) : 9990.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] (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: 1036932 (overridden on cmd)
Total bytes of diff: 1029728 (overridden on cmd)
Total bytes of delta: -7204 (-0.69 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
68 : 6731.dasm (8.99 % of base)
64 : 4235.dasm (5.39 % of base)
48 : 7397.dasm (16.67 % of base)
28 : 10108.dasm (9.21 % of base)
24 : 6542.dasm (31.58 % of base)
24 : 3112.dasm (6.59 % of base)
24 : 5914.dasm (23.08 % of base)
20 : 5969.dasm (16.13 % of base)
20 : 69.dasm (6.25 % of base)
20 : 7645.dasm (4.39 % of base)
12 : 3115.dasm (1.01 % of base)
4 : 4724.dasm (3.45 % of base)
4 : 8099.dasm (4.35 % of base)
4 : 8100.dasm (1.89 % of base)
4 : 5966.dasm (3.03 % of base)
Top file improvements (bytes):
-328 : 994.dasm (-22.47 % of base)
-328 : 3270.dasm (-23.98 % of base)
-228 : 3191.dasm (-7.52 % of base)
-212 : 13.dasm (-33.12 % of base)
-212 : 3626.dasm (-12.62 % of base)
-212 : 10.dasm (-30.99 % of base)
-200 : 3277.dasm (-19.69 % of base)
-192 : 9095.dasm (-6.81 % of base)
-184 : 481.dasm (-24.34 % of base)
-184 : 67.dasm (-26.14 % of base)
-176 : 3519.dasm (-27.85 % of base)
-160 : 751.dasm (-17.62 % of base)
-136 : 6537.dasm (-18.68 % of base)
-136 : 2286.dasm (-30.63 % of base)
-132 : 512.dasm (-19.76 % of base)
-128 : 860.dasm (-27.12 % of base)
-128 : 9155.dasm (-29.91 % of base)
-128 : 494.dasm (-18.71 % of base)
-100 : 2187.dasm (-24.04 % of base)
-100 : 634.dasm (-21.93 % of base)
63 total files with Code Size differences (48 improved, 15 regressed), 22 unchanged.
Top method regressions (bytes):
68 (8.99 % of base) : 6731.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) : 4235.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) : 7397.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) : 10108.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) : 5914.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) : 6542.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) : 3112.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) : 7645.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) : 5969.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)
12 (1.01 % of base) : 3115.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
4 (1.89 % of base) : 8100.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (4.35 % of base) : 8099.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.03 % of base) : 5966.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) : 4724.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)
Top method improvements (bytes):
-328 (-22.47 % of base) : 994.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) : 3270.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 (-7.52 % of base) : 3191.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-212 (-12.62 % of base) : 3626.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) : 3277.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)
-192 (-6.81 % of base) : 9095.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (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) : 3519.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-160 (-17.62 % of base) : 751.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)
-136 (-18.68 % of base) : 6537.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) : 2286.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 (-18.71 % of base) : 494.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-128 (-29.91 % of base) : 9155.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[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)
Top method regressions (percentages):
24 (31.58 % of base) : 6542.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) : 5914.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) : 7397.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) : 5969.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) : 10108.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) : 6731.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) : 3112.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) : 4235.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) : 7645.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) : 8099.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.45 % of base) : 4724.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.03 % of base) : 5966.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) : 8100.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
12 (1.01 % of base) : 3115.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):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) : 2212.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) : 2286.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-72 (-30.51 % of base) : 6498.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) : 9155.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-176 (-27.85 % of base) : 3519.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) : 2343.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) : 5949.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) : 3378.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) : 3356.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) : 4374.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) : 2398.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 osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1633176 (overridden on cmd)
Total bytes of diff: 1615940 (overridden on cmd)
Total bytes of delta: -17236 (-1.06 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
124 : 6961.dasm (12.55 % of base)
48 : 6614.dasm (10.62 % of base)
48 : 6625.dasm (10.62 % of base)
48 : 6635.dasm (10.81 % of base)
48 : 6638.dasm (10.62 % of base)
20 : 13185.dasm (6.10 % of base)
20 : 7800.dasm (13.51 % of base)
16 : 6562.dasm (8.51 % of base)
8 : 9476.dasm (5.88 % of base)
8 : 2154.dasm (4.26 % of base)
8 : 8704.dasm (3.03 % of base)
4 : 12204.dasm (5.56 % of base)
4 : 2389.dasm (1.59 % of base)
4 : 5567.dasm (0.98 % of base)
Top file improvements (bytes):
-328 : 9583.dasm (-29.29 % of base)
-328 : 3346.dasm (-24.33 % of base)
-228 : 8058.dasm (-28.22 % of base)
-212 : 233.dasm (-30.99 % of base)
-212 : 730.dasm (-33.12 % of base)
-208 : 6797.dasm (-23.01 % of base)
-208 : 7748.dasm (-23.42 % of base)
-200 : 5885.dasm (-11.79 % of base)
-188 : 13022.dasm (-23.86 % of base)
-184 : 237.dasm (-24.34 % of base)
-184 : 688.dasm (-26.14 % of base)
-172 : 8657.dasm (-22.63 % of base)
-172 : 8901.dasm (-18.53 % of base)
-164 : 5683.dasm (-22.04 % of base)
-160 : 13087.dasm (-17.62 % of base)
-152 : 9584.dasm (-14.02 % of base)
-144 : 8457.dasm (-18.09 % of base)
-144 : 6757.dasm (-20.81 % of base)
-144 : 7897.dasm (-24.32 % of base)
-144 : 8630.dasm (-20.11 % of base)
70 total files with Code Size differences (56 improved, 14 regressed), 21 unchanged.
Top method regressions (bytes):
124 (12.55 % of base) : 6961.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) : 6635.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) : 6638.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) : 6625.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) : 6614.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) : 7800.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) : 13185.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) : 6562.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) : 8704.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) : 2154.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) : 9476.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) : 5567.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) : 2389.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) : 12204.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
Top method improvements (bytes):
-328 (-29.29 % of base) : 9583.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) : 3346.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) : 8058.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) : 730.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-23.01 % of base) : 6797.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) : 7748.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) : 5885.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) : 13022.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) : 688.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) : 8657.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) : 8901.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) : 5683.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) : 13087.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) : 9584.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) : 8457.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) : 7897.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) : 6757.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) : 8630.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) : 7800.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) : 6961.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) : 6635.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) : 6638.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) : 6625.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) : 6614.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) : 6562.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) : 13185.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) : 9476.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) : 12204.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
8 (4.26 % of base) : 2154.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) : 8704.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) : 2389.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) : 5567.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) : 9047.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) : 730.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-60 (-32.61 % of base) : 8708.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 10142.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) : 8978.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) : 5585.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) : 5726.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) : 6394.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) : 7613.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) : 9583.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) : 7856.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) : 8058.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) : 5577.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) : 5982.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 10435.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) : 8884.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) : 4684.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) : 8701.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) : 5724.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 89,877 contexts (39,512 MinOpts, 50,365 FullOpts).
MISSED contexts: base: 3,991 (2.85%), diff: 46,273 (33.03%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.arm64.checked.mch | 850,828 | -5,476 |
benchmarks.run_pgo.windows.arm64.checked.mch | 2,287,604 | -19,696 |
benchmarks.run_tiered.windows.arm64.checked.mch | 2,227,248 | -17,092 |
coreclr_tests.run.windows.arm64.checked.mch | 561,672 | -612 |
libraries.pmi.windows.arm64.checked.mch | 1,150,104 | -732 |
libraries_tests.run.windows.arm64.Release.mch | 2,258,308 | -22,440 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 1,051,504 | -7,732 |
realworld.run.windows.arm64.checked.mch | 1,662,480 | -17,164 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run_pgo.windows.arm64.checked.mch | 1,817,936 | -15,984 |
benchmarks.run_tiered.windows.arm64.checked.mch | 2,005,868 | -15,300 |
coreclr_tests.run.windows.arm64.checked.mch | 388,052 | -172 |
libraries_tests.run.windows.arm64.Release.mch | 2,220,016 | -21,744 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.arm64.checked.mch | 850,452 | -5,476 |
benchmarks.run_pgo.windows.arm64.checked.mch | 469,668 | -3,712 |
benchmarks.run_tiered.windows.arm64.checked.mch | 221,380 | -1,792 |
coreclr_tests.run.windows.arm64.checked.mch | 173,620 | -440 |
libraries.pmi.windows.arm64.checked.mch | 1,150,032 | -732 |
libraries_tests.run.windows.arm64.Release.mch | 38,292 | -696 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 1,051,504 | -7,732 |
realworld.run.windows.arm64.checked.mch | 1,662,380 | -17,164 |
@@ -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,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
@@ -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,60 +8,61 @@
; 0 inlinees with PGO data; 28 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V02 tmp1 [V02,T01] ( 5, 8 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V03 tmp2 [V03,T19] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-; V05 tmp4 [V05,T09] ( 6, 3 ) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-; V06 tmp5 [V06,T15] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-; V07 tmp6 [V07,T10] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp7 [V08,T06] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp8 [V09,T28] ( 2, 1 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V10 tmp9 [V10,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V13 tmp12 [V13,T02] ( 6, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>+; V02 tmp1 [V02,T01] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V03 tmp2 [V03,T21] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V04 tmp3 [V04,T06] ( 7, 4.50) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V05 tmp4 [V05,T17] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V06 tmp5 [V06,T12] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>>
+; V07 tmp6 [V07,T07] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
+; V08 tmp7 [V08,T30] ( 2, 1 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V09 tmp8 [V09,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V12 tmp11 [V12,T03] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> ;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-; V16 tmp15 [V16,T24] ( 3, 1.50) ref -> x22 class-hnd "Inline return value spill temp" <<unknown class>>
-; V17 tmp16 [V17,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-; V18 tmp17 [V18,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
-; V19 tmp18 [V19,T22] ( 2, 2 ) int -> x19 "Inlining Arg"
-;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
-; V21 tmp20 [V21,T29] ( 2, 1 ) ref -> x15
-;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
-; V24 tmp23 [V24,T16] ( 4, 2 ) ref -> x15
-;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
-;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
-;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
-;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V33 tmp32 [V33,T12] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x21 "Inlining Arg"
-; V35 tmp34 [V35,T03] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-; V36 tmp35 [V36,T25] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
-; V37 tmp36 [V37,T11] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-INDEP
-;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._comparers (fldOffset=0x8)" P-INDEP
-;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V28._root (fldOffset=0x0)" P-DEP
-;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V28._countAdjustment (fldOffset=0x8)" P-DEP
-; V42 tmp41 [V42,T08] ( 7, 3.50) ref -> x19 "field V29._root (fldOffset=0x0)" P-INDEP
-; V43 tmp42 [V43,T32] ( 2, 1 ) int -> x1 "field V29._countAdjustment (fldOffset=0x8)" P-INDEP
-; V44 tmp43 [V44,T30] ( 2, 1 ) ref -> x2 single-def "field V30._root (fldOffset=0x0)" P-INDEP
-; V45 tmp44 [V45,T31] ( 2, 1 ) ref -> x3 single-def "field V30._comparers (fldOffset=0x8)" P-INDEP
-; V46 tmp45 [V46,T21] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V47 cse0 [V47,T26] ( 3, 1.50) ref -> x3 "CSE - moderate"
-; V48 cse1 [V48,T13] ( 5, 2.50) ref -> x22 "CSE - aggressive"
-; V49 cse2 [V49,T14] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate"
-; V50 cse3 [V50,T17] ( 4, 2 ) ref -> x1 "CSE - moderate"
-; V51 cse4 [V51,T27] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V52 cse5 [V52,T18] ( 4, 2 ) long -> x21 "CSE - moderate"
-; V53 cse6 [V53,T05] ( 7, 4.50) long -> x20 "CSE - aggressive"+; V15 tmp14 [V15,T26] ( 3, 1.50) ref -> x21 class-hnd "Inline return value spill temp" <<unknown class>>
+; V16 tmp15 [V16,T22] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
+; V17 tmp16 [V17,T08] ( 4, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V18 tmp17 [V18,T24] ( 2, 2 ) int -> x20 "Inlining Arg"
+;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
+; V20 tmp19 [V20,T31] ( 2, 1 ) ref -> x15
+;* V21 tmp20 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
+; V23 tmp22 [V23,T18] ( 4, 2 ) ref -> x15
+;* V24 tmp23 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
+;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
+;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
+;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]>
+;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]>
+;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V32 tmp31 [V32,T14] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V33 tmp32 [V33,T25] ( 2, 2 ) int -> x20 "Inlining Arg"
+; V34 tmp33 [V34,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V35 tmp34 [V35,T27] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V36 tmp35 [V36,T13] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
+;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref "field V26._root (fldOffset=0x0)" P-INDEP
+;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V26._comparers (fldOffset=0x8)" P-INDEP
+;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-DEP
+;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V27._countAdjustment (fldOffset=0x8)" P-DEP
+; V41 tmp40 [V41,T10] ( 7, 3.50) ref -> x19 "field V28._root (fldOffset=0x0)" P-INDEP
+; V42 tmp41 [V42,T34] ( 2, 1 ) int -> x1 "field V28._countAdjustment (fldOffset=0x8)" P-INDEP
+; V43 tmp42 [V43,T32] ( 2, 1 ) ref -> x2 single-def "field V29._root (fldOffset=0x0)" P-INDEP
+; V44 tmp43 [V44,T33] ( 2, 1 ) ref -> x3 single-def "field V29._comparers (fldOffset=0x8)" P-INDEP
+; V45 tmp44 [V45,T23] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V46 cse0 [V46,T28] ( 3, 1.50) ref -> x3 "CSE - moderate"
+; V47 cse1 [V47,T15] ( 5, 2.50) ref -> x21 "CSE - aggressive"
+; V48 cse2 [V48,T16] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate"
+; V49 cse3 [V49,T19] ( 4, 2 ) ref -> x1 "CSE - moderate"
+; V50 cse4 [V50,T29] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V51 cse5 [V51,T20] ( 4, 2 ) long -> x19 "CSE - moderate"
+; V52 cse6 [V52,T11] ( 7, 3.50) long -> registers multi-def "CSE - moderate"
+; V53 rat0 [V53,T02] ( 4, 6.50) ref -> x20 "replacement local"
+; V54 rat1 [V54,T09] ( 2, 4 ) long -> x1 "CSE for expectedClsNode" ;
; Lcl frame size = 0
@@ -76,39 +77,49 @@ G_M57422_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr x19, [x0, #0x18]
; gcrRegs +[x19]- cbz x19, G_M57422_IG15
- ldr x1, [x19]
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- cmp x1, x20
- bne G_M57422_IG13
- ;; size=32 bbWeight=1 PerfScore 10.00
-G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- ldr x22, [x21]
- ; gcrRegs +[x22]
- mov x2, x22+ cbz x19, G_M57422_IG17
+ mov x20, x19
+ ; gcrRegs +[x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x2, [x20]
+ cmp x2, x1
+ beq G_M57422_IG04
+ ;; size=36 bbWeight=1 PerfScore 10.50
+G_M57422_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M57422_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M57422_IG15
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M57422_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ movz x19, #0xD1FFAB1E
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ ldr x21, [x19]
+ ; gcrRegs +[x21]
+ mov x2, x21 ; gcrRegs +[x2]- mov x0, x22+ mov x0, x21 ; gcrRegs +[x0]- ldr x1, [x19, #0x10]+ ldr x1, [x20, #0x10] ; gcrRegs +[x1]
ldr x3, [x1, #0x08]
; gcrRegs +[x3]
cmp x3, x0- bne G_M57422_IG05+ bne G_M57422_IG07 ldr x2, [x1, #0x10]
cmp x2, x0- bne G_M57422_IG04
- mov x0, x19
- b G_M57422_IG12+ bne G_M57422_IG06
+ mov x0, x20
+ b G_M57422_IG14 ;; size=60 bbWeight=0.50 PerfScore 9.50-G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2 x22]+G_M57422_IG06: ; bbWeight=0.50, gcrefRegs=10000B {x0 x1 x3 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2 x21] ldrsb wzr, [x1]
mov x1, x3
mov x2, x0
@@ -124,42 +135,45 @@ G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs
ldr x3, [x3]
blr x3
; gcrRegs -[x1-x2] +[x0]+ mov x21, x0
+ ; gcrRegs +[x21]
+ movz x22, #0xD1FFAB1E
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ mov x0, x22
+ ; gcrRegs -[x0]
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
+ ; gcrRegs +[x0] mov x22, x0
; gcrRegs +[x22]- mov x0, x20
- ; gcrRegs -[x0]
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- mov x23, x0+ ldr x23, [x20, #0x08] ; gcrRegs +[x23]- ldr x20, [x19, #0x08]
- ; gcrRegs +[x20]
- ldr w19, [x19, #0x18]
- ; gcrRegs -[x19]
- cbz x22, G_M57422_IG17
- mov x15, x22+ ldr w20, [x20, #0x18]
+ ; gcrRegs -[x20]
+ cbz x21, G_M57422_IG19
+ mov x15, x21 ; gcrRegs +[x15]- add x14, x23, #16+ add x14, x22, #16 ; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[x0 x15 x22]+ ; gcrRegs -[x0 x15 x21] ; byrRegs -[x14]- ldr x2, [x21, #0xD1FFAB1E]+ ldr x2, [x19, #0xD1FFAB1E] ; gcrRegs +[x2]- add x14, x23, #8+ add x14, x22, #8 ; byrRegs +[x14]
mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x2 x15]
; byrRegs -[x14]- cbz x20, G_M57422_IG16+ cbz x23, G_M57422_IG18 movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
; gcrRegs +[x1]- mov x0, x20+ mov x0, x23 ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]]):this
...
@@ -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)
@@ -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[] (FullOpts)+; 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[] (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 (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)
@@ -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)
@@ -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.80) 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.61) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.61) 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.80) 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.61
+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.60, 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.61, 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.38) long -> x19 single-def
+; V02 arg1 [V02,T01] ( 4, 3.19) byref -> x20 single-def ; V03 loc0 [V03,T03] ( 7, 3.76) 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.53) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>+; V06 tmp1 [V06,T04] ( 4, 1.53) 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.76) long -> x0 "runtime lookup"
-; V10 rat1 [V10,T05] ( 3, 1.07) 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.34
-G_M58319_IG04: ; bbWeight=0.15, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- b G_M58319_IG06
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-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.11
-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.34
-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.48
+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.44, 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.48, 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,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:
@@ -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)
@@ -17,7 +17,7 @@
; V06 tmp4 [V06,T05] ( 4, 2 ) ref -> x1
; V07 tmp5 [V07,T01] ( 5, 5 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <System.Threading.ContextCallback>
; V08 tmp6 [V08,T03] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>-;* V09 cse0 [V09,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"+;* V09 cse0 [V09,T09] ( 0, 0 ) byref -> zero-ref "CSE - aggressive" ; V10 cse1 [V10,T04] ( 3, 2.50) ref -> x20 "CSE - aggressive"
; V11 cse2 [V11,T02] ( 6, 3 ) long -> x21 multi-def "CSE - aggressive"
;
@@ -70,7 +70,8 @@ G_M10558_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #1- bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+ ; byrRegs +[x0] ; gcr arg pop 0
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
@@ -79,9 +80,10 @@ G_M10558_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
; gcrRegs +[x1]
cbnz x1, G_M10558_IG06
movz x0, #0xD1FFAB1E+ ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- bl CORINFO_HELP_NEWSFAST+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN ; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, 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)
@@ -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, #0xD1FFAB1E 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)
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 Tier1)@@ -8,14 +8,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) byref -> zero-ref this single-def-; V01 TypeCtx [V01,T00] ( 5, 4.36) long -> x1 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) byref -> x19 single-def+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) byref -> x19 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,T05] ( 2, 4 ) long -> x0 "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> x0 "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> x0 "spilling expr"
-; V08 rat2 [V08,T03] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -27,43 +24,28 @@ G_M49756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x2
; byrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00-G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x1, #0x38]
- ldr x2, [x0, #0x08]
- cmp x2, #24
- ble G_M49756_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M49756_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ldr x0, [x0, #0x18]
- cbz x0, G_M49756_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M49756_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- b G_M49756_IG06
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M49756_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref+G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, 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 ; gcr arg pop 0- ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M49756_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref mov x1, x19
; byrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M49756_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=40 bbWeight=1 PerfScore 8.00
+G_M49756_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 20, PerfScore 25.42, instruction count 25, allocated bytes for code 100 (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 Tier1)+; Total bytes of code 72, prolog size 20, PerfScore 16.00, instruction count 18, allocated bytes for code 72 (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 Tier1) ; ============================================================
Unwind Info:
@@ -74,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 25 (0x00019) Actual length = 100 (0x000064)+ Function Length : 18 (0x00012) Actual length = 72 (0x000048) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -7,16 +7,13 @@
; No matching PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> x0 single-def
-; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
-; V03 arg2 [V03,T04] ( 3, 3 ) byref -> x21 single-def+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T03] ( 3, 3 ) byref -> x21 single-def ;# 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,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V07 rat0 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup"
-; V08 rat1 [V08,T01] ( 3, 5.60) long -> x1 "spilling expr"
-; V09 rat2 [V09,T05] ( 3, 4.48) long -> x2 "fgMakeTemp is creating a new local variable"+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x0 "argument with side effect" ;
; Lcl frame size = 8
@@ -33,28 +30,12 @@ G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov x21, x3
; byrRegs +[x21]
;; size=32 bbWeight=1 PerfScore 6.00-G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x10]
- cmp x2, #32
- ble G_M252_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M252_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
- ldr x2, [x1, #0x20]
- cbz x2, G_M252_IG05
- ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M252_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
- mov x0, x2
- b G_M252_IG06
- ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M252_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref+G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, 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.36 PerfScore 0.90
-G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref mov x1, x19
; gcrRegs +[x1]
mov x2, x20
@@ -65,8 +46,8 @@ G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]- ;; size=28 bbWeight=1 PerfScore 6.00
-G_M252_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=44 bbWeight=1 PerfScore 8.50
+G_M252_IG03: ; bbWeight=1, epilog, nogc, extend ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -74,7 +55,7 @@ G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 124, prolog size 32, PerfScore 29.56, instruction count 31, allocated bytes for code 124 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)+; Total bytes of code 92, prolog size 32, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1) ; ============================================================
Unwind Info:
@@ -85,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)+ 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)
@@ -8,7 +8,7 @@
; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <System.Object>
;# 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_M43438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0x58] // [V00 arg0]
;; size=12 bbWeight=1 PerfScore 2.50
G_M43438_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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -54,13 +59,13 @@ G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3- ;; size=132 bbWeight=1 PerfScore 38.50+ ;; size=144 bbWeight=1 PerfScore 47.00 G_M43438_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=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):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+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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E LSL #32
ldr x0, [x0]
@@ -54,13 +59,13 @@ G_M63921_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movk x3, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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)
1[int]](System.__Canon,System.Nullable
1[int]):System.Tuple2[System.__Canon,System.Nullable
1[int]@@ -8,14 +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.20) long -> x0 single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T04] ( 3, 3 ) struct ( 8) x20 single-def <System.Nullable`1[int]>+; 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 ) struct ( 8) x20 single-def <System.Nullable`1[int]> ;# 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.Nullable`1[int]]>
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V06 rat0 [V06,T05] ( 3, 4 ) long -> x1 "runtime lookup"
-; V07 rat1 [V07,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -28,24 +26,12 @@ G_M65401_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
mov x20, x2
;; size=24 bbWeight=1 PerfScore 4.50-G_M65401_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x18]
- cbz x1, G_M65401_IG04
- ;; size=12 bbWeight=1 PerfScore 7.00
-G_M65401_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M65401_IG05
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M65401_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref+G_M65401_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_M65401_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]
@@ -55,14 +41,14 @@ G_M65401_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs -[x15 x19]
; byrRegs -[x14]
str x20, [x0, #0x10]- ;; size=24 bbWeight=1 PerfScore 4.50
-G_M65401_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=36 bbWeight=1 PerfScore 6.50
+G_M65401_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 96, prolog size 16, PerfScore 20.40, instruction count 24, allocated bytes for code 96 (MethodHash=4dd20086) for method 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)+; Total bytes of code 72, prolog size 16, PerfScore 14.00, instruction count 18, allocated bytes for code 72 (MethodHash=4dd20086) for method 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) ; ============================================================
Unwind Info:
@@ -73,7 +59,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 24 (0x00018) Actual length = 96 (0x000060)+ 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)
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, #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_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, #0xD1FFAB1E 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)
1[int]](System.Numerics.Vector
1[System.Canon]):System.Numerics.Vector1[System.Nullable
1[int]@@ -8,15 +8,13 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 TypeCtx [V00,T00] ( 5, 3 ) long -> x0 single-def+; V00 TypeCtx [V00,T00] ( 4, 3 ) long -> x0 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret 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 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp3 [V05,T01] ( 1, 1 ) long -> x1 single-def "field V01._00 (fldOffset=0x0)" P-INDEP
; V06 tmp4 [V06,T02] ( 1, 1 ) long -> x2 single-def "field V01._01 (fldOffset=0x8)" P-INDEP-; V07 rat0 [V07,T03] ( 3, 0 ) long -> x1 "runtime lookup"
-; V08 rat1 [V08,T04] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 16
@@ -25,21 +23,11 @@ G_M15239_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x18]
;; size=12 bbWeight=0 PerfScore 0.00-G_M15239_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x1, [x1, #0x18]
- cbz x1, G_M15239_IG03
- b G_M15239_IG04
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M15239_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15239_IG02: ; bbWeight=0, gcrefRegs=0000 {}, 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 PerfScore 0.00
-G_M15239_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1+ bl CORINFO_HELP_MEMCPY movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowForUnsupportedNumericsVectorBaseType[System.__Canon]()
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -52,9 +40,9 @@ G_M15239_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x1, [x1]
blr x1
brk_windows #0- ;; size=52 bbWeight=0 PerfScore 0.00+ ;; size=64 bbWeight=0 PerfScore 0.00 -; Total bytes of code 100, prolog size 12, PerfScore 0.00, instruction count 25, allocated bytes for code 100 (MethodHash=e0ddc478) for method 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)+; Total bytes of code 76, prolog size 12, PerfScore 0.00, instruction count 19, allocated bytes for code 76 (MethodHash=e0ddc478) for method 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) ; ============================================================
Unwind Info:
@@ -65,7 +53,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 25 (0x00019) Actual length = 100 (0x000064)+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c) ---- Epilog scopes ----
No epilogs
---- Unwind codes ----
@@ -33,7 +33,7 @@ G_M23842_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -45,8 +45,9 @@ G_M23842_IG02: ; bbWeight=1, 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=60 bbWeight=1 PerfScore 13.50+ ;; size=64 bbWeight=1 PerfScore 16.50 G_M23842_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -59,7 +60,7 @@ G_M23842_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
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]
; gcr arg pop 0
mov x19, x0
@@ -70,7 +71,7 @@ G_M23842_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
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]
; gcr arg pop 0
mov x1, x0
@@ -86,7 +87,7 @@ G_M23842_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 16, PerfScore 20.50, instruction count 42, allocated bytes for code 168 (MethodHash=dd33a2dd) for method Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)+; Total bytes of code 172, prolog size 16, PerfScore 23.50, instruction count 43, allocated bytes for code 172 (MethodHash=dd33a2dd) for method Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -97,7 +98,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -30,7 +30,7 @@ G_M32832_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -40,8 +40,9 @@ G_M32832_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32+ ldr wzr, [x0] ldr x1, [x11]- ;; size=56 bbWeight=1 PerfScore 13.00+ ;; size=60 bbWeight=1 PerfScore 16.00 G_M32832_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -54,7 +55,7 @@ G_M32832_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
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]
; gcr arg pop 0
mov x19, x0
@@ -65,7 +66,7 @@ G_M32832_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
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]
; gcr arg pop 0
mov x1, x0
@@ -81,7 +82,7 @@ G_M32832_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 19.50, instruction count 40, allocated bytes for code 160 (MethodHash=0e6f7fbf) for method Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)+; Total bytes of code 164, prolog size 12, PerfScore 22.50, instruction count 41, allocated bytes for code 164 (MethodHash=0e6f7fbf) for method Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts) ; ============================================================
Unwind Info:
@@ -92,7 +93,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)+ 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,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
@@ -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)
@@ -19,28 +19,13 @@ G_M54291_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_M54291_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_M54291_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M54291_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_M54291_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M54291_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M54291_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_M54291_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_M54291_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x2, [x2]
blr x2
; gcrRegs -[x1] +[x0]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M54291_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M54291_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=caf92bec) for method Microsoft.VisualStudio.Composition.DelegateServices:FromValue[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=caf92bec) for method Microsoft.VisualStudio.Composition.DelegateServices:FromValue[System.__Canon](System.__Canon):System.Func`1[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)
@@ -19,28 +19,13 @@ G_M43027_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_M43027_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_M43027_IG04
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M43027_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_M43027_IG05
- ;; size=20 bbWeight=0.80 PerfScore 8.00
-G_M43027_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M43027_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_M43027_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x0, [fp, #0x10] // [V03 tmp1]
ldr x1, [fp, #0x18] // [V01 arg0]
; byrRegs +[x1]
@@ -51,13 +36,13 @@ G_M43027_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs +[x0]
; byrRegs -[x1]- ;; size=28 bbWeight=1 PerfScore 9.50
-G_M43027_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=52 bbWeight=1 PerfScore 15.00
+G_M43027_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=b56857ec) for method Roslyn.Utilities.RoslynLazyInitializer:EnsureInitialized[System.__Canon](byref):System.__Canon (Tier0)+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=b56857ec) for method Roslyn.Utilities.RoslynLazyInitializer:EnsureInitialized[System.__Canon](byref):System.__Canon (Tier0) ; ============================================================
Unwind Info:
@@ -68,7 +53,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)
@@ -192,7 +192,7 @@ G_M33609_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {
; 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, #0x90] // [V19 tmp9]
@@ -310,9 +310,11 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #209- 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]
@@ -328,7 +330,7 @@ G_M33609_IG15: ; bbWeight=0, 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, #0x68] // [V24 tmp14]
@@ -337,9 +339,11 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #209- 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]
@@ -362,7 +366,8 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #209- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+ ; byrRegs +[x0] ; gcr arg pop 0
ldr x15, [fp, #0x68] // [V24 tmp14]
; gcrRegs +[x15]
@@ -371,6 +376,7 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x14, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]+ ; byrRegs -[x0] ldr x0, [fp, #0x68] // [V24 tmp14]
; gcrRegs +[x0]
str x0, [fp, #0x70] // [V23 tmp13]
@@ -464,7 +470,7 @@ G_M33609_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 {
; 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, #0xB0] // [V15 tmp5]
@@ -50,9 +50,11 @@ G_M38504_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov w1, #163- 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]
3[Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken,ubyte],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray
1Microsoft.CodeAnalysis.SyntaxNode@@ -129,9 +129,11 @@ G_M34356_IG05: ; 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]
@@ -245,9 +247,11 @@ G_M34356_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
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]
@@ -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[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)
@@ -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.windows.arm64.checked.mch | 132 | 103 | 3 | 26 | -5,536 | +60 |
benchmarks.run_pgo.windows.arm64.checked.mch | 335 | 287 | 14 | 34 | -19,808 | +112 |
benchmarks.run_tiered.windows.arm64.checked.mch | 258 | 219 | 2 | 37 | -17,120 | +28 |
coreclr_tests.run.windows.arm64.checked.mch | 103 | 73 | 27 | 3 | -768 | +156 |
libraries.crossgen2.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.windows.arm64.checked.mch | 131 | 75 | 5 | 51 | -1,624 | +892 |
libraries_tests.run.windows.arm64.Release.mch | 314 | 295 | 0 | 19 | -22,440 | +0 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 188 | 138 | 19 | 31 | -8,212 | +480 |
realworld.run.windows.arm64.checked.mch | 353 | 319 | 13 | 21 | -17,552 | +388 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
1,814 | 1,509 | 83 | 222 | -93,060 | +2,116 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 4,454 | 2 | 4,452 | 464 (5.38%) | 3,778 (43.78%) |
benchmarks.run_pgo.windows.arm64.checked.mch | 14,762 | 12,353 | 2,409 | 277 (1.28%) | 6,530 (30.11%) |
benchmarks.run_tiered.windows.arm64.checked.mch | 14,808 | 12,830 | 1,978 | 111 (0.55%) | 4,968 (24.63%) |
coreclr_tests.run.windows.arm64.checked.mch | 2,161 | 1,237 | 924 | 56 (1.23%) | 2,008 (43.99%) |
libraries.crossgen2.windows.arm64.checked.mch | 8,271 | 10 | 8,261 | 0 (0.00%) | 3,143 (26.61%) |
libraries.pmi.windows.arm64.checked.mch | 12,766 | 1 | 12,765 | 697 (3.81%) | 5,121 (28.01%) |
libraries_tests.run.windows.arm64.Release.mch | 13,311 | 13,075 | 236 | 22 (0.12%) | 4,507 (24.74%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 5,322 | 0 | 5,322 | 1,015 (10.10%) | 4,330 (43.08%) |
realworld.run.windows.arm64.checked.mch | 8,950 | 1 | 8,949 | 1,001 (7.10%) | 4,747 (33.68%) |
smoke_tests.nativeaot.windows.arm64.checked.mch | 5,072 | 3 | 5,069 | 348 (2.76%) | 7,141 (56.63%) |
89,877 | 39,512 | 50,365 | 3,991 (2.85%) | 46,273 (33.03%) |
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: 850828 (overridden on cmd)
Total bytes of diff: 845352 (overridden on cmd)
Total bytes of delta: -5476 (-0.64 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
36 : 7215.dasm (3.83 % of base)
20 : 5480.dasm (6.25 % of base)
4 : 5919.dasm (4.55 % of base)
Top file improvements (bytes):
-328 : 7327.dasm (-23.98 % of base)
-212 : 245.dasm (-30.99 % of base)
-212 : 591.dasm (-33.12 % of base)
-208 : 5757.dasm (-15.76 % of base)
-184 : 249.dasm (-24.34 % of base)
-184 : 544.dasm (-26.14 % of base)
-156 : 4370.dasm (-29.32 % of base)
-144 : 5640.dasm (-15.06 % of base)
-136 : 1727.dasm (-30.63 % of base)
-132 : 4844.dasm (-19.30 % of base)
-128 : 4901.dasm (-27.12 % of base)
-128 : 479.dasm (-18.71 % of base)
-128 : 7655.dasm (-25.81 % of base)
-100 : 6469.dasm (-20.49 % of base)
-100 : 214.dasm (-19.84 % of base)
-100 : 7518.dasm (-24.04 % of base)
-92 : 4378.dasm (-22.12 % of base)
-72 : 4369.dasm (-23.38 % of base)
-72 : 4505.dasm (-25.00 % of base)
-72 : 1946.dasm (-23.38 % of base)
46 total files with Code Size differences (43 improved, 3 regressed), 24 unchanged.
Top method regressions (bytes):
36 (3.83 % of base) : 7215.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
20 (6.25 % of base) : 5480.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
4 (4.55 % of base) : 5919.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
Top method improvements (bytes):
-328 (-23.98 % of base) : 7327.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) : 591.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-15.76 % of base) : 5757.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) : 544.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) : 4370.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) : 5640.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) : 1727.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-132 (-19.30 % of base) : 4844.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) : 4901.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) : 7655.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-128 (-18.71 % of base) : 479.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-100 (-20.49 % of base) : 6469.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-100 (-24.04 % of base) : 7518.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) : 4378.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
-72 (-15.00 % of base) : 6429.dasm - ProtoBuf.ProtoWriter:WriteMessage[System.__Canon](byref,System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon],int,ubyte):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)
-72 (-23.38 % of base) : 4369.dasm - System.Linq.Enumerable:Take[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) : 5480.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
4 (4.55 % of base) : 5919.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
36 (3.83 % of base) : 7215.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
Top method improvements (percentages):
-212 (-33.12 % of base) : 591.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) : 8812.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-136 (-30.63 % of base) : 1727.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-156 (-29.32 % of base) : 4370.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) : 4901.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) : 6383.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-184 (-26.14 % of base) : 544.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) : 7655.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
-72 (-25.00 % of base) : 4505.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) : 1942.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-44 (-24.44 % of base) : 6106.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-44 (-24.44 % of base) : 4507.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) : 7518.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) : 7327.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) : 4436.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-72 (-23.38 % of base) : 4369.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) : 1946.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: 2287604 (overridden on cmd)
Total bytes of diff: 2267908 (overridden on cmd)
Total bytes of delta: -19696 (-0.86 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
8 : 15488.dasm (6.06 % of base)
8 : 19001.dasm (6.06 % of base)
8 : 22046.dasm (6.06 % of base)
8 : 2523.dasm (6.06 % of base)
8 : 2855.dasm (6.06 % of base)
8 : 3255.dasm (6.06 % of base)
8 : 5515.dasm (6.06 % of base)
8 : 5993.dasm (6.06 % of base)
8 : 6031.dasm (6.06 % of base)
8 : 6226.dasm (6.06 % of base)
8 : 6299.dasm (6.06 % of base)
8 : 6340.dasm (6.06 % of base)
8 : 10112.dasm (6.06 % of base)
8 : 15430.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 1905.dasm (-43.85 % of base)
-428 : 731.dasm (-42.63 % of base)
-372 : 1763.dasm (-37.35 % of base)
-372 : 2884.dasm (-32.98 % of base)
-372 : 737.dasm (-35.36 % of base)
-316 : 4886.dasm (-40.10 % of base)
-316 : 5754.dasm (-37.44 % of base)
-296 : 8539.dasm (-39.78 % of base)
-260 : 2215.dasm (-39.88 % of base)
-260 : 7961.dasm (-40.37 % of base)
-260 : 8189.dasm (-40.37 % of base)
-260 : 1616.dasm (-27.66 % of base)
-260 : 16625.dasm (-35.71 % of base)
-240 : 277.dasm (-32.97 % of base)
-212 : 16671.dasm (-33.12 % of base)
-212 : 21790.dasm (-33.12 % of base)
-212 : 4941.dasm (-33.12 % of base)
-212 : 8030.dasm (-32.12 % of base)
-204 : 12614.dasm (-30.00 % of base)
-204 : 666.dasm (-30.18 % of base)
63 total files with Code Size differences (49 improved, 14 regressed), 22 unchanged.
Top method regressions (bytes):
8 (6.06 % of base) : 15488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19001.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22046.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2523.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2855.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 3255.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 5515.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 5993.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6031.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6226.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6299.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6340.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 10112.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15430.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) : 731.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) : 1905.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-32.98 % of base) : 2884.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) : 737.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 1763.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) : 4886.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) : 5754.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 8539.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) : 2215.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) : 8189.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) : 7961.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) : 16625.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1616.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 277.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 16671.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 21790.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-33.12 % of base) : 4941.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-212 (-32.12 % of base) : 8030.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-30.00 % of base) : 12614.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-30.18 % of base) : 666.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):
8 (6.06 % of base) : 15488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 19001.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 22046.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2523.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 2855.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 3255.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 5515.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 5993.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6031.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6226.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6299.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 6340.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 10112.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (6.06 % of base) : 15430.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) : 1905.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 731.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) : 13582.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-148 (-41.57 % of base) : 4921.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-41.07 % of base) : 14056.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 22802.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-260 (-40.37 % of base) : 8189.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) : 7961.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) : 4886.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-260 (-39.88 % of base) : 2215.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) : 8539.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) : 11337.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 9337.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-148 (-37.76 % of base) : 7689.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) : 5754.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-372 (-37.35 % of base) : 1763.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) : 1891.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) : 4885.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) : 8236.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 7691.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: 2227248 (overridden on cmd)
Total bytes of diff: 2210156 (overridden on cmd)
Total bytes of delta: -17092 (-0.77 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
20 : 14880.dasm (6.25 % of base)
8 : 1034.dasm (6.06 % of base)
Top file improvements (bytes):
-428 : 1733.dasm (-43.85 % of base)
-428 : 692.dasm (-42.63 % of base)
-372 : 1607.dasm (-37.35 % of base)
-372 : 5666.dasm (-32.98 % of base)
-372 : 698.dasm (-35.36 % of base)
-316 : 5034.dasm (-38.54 % of base)
-316 : 5272.dasm (-37.44 % of base)
-296 : 8594.dasm (-39.78 % of base)
-268 : 7324.dasm (-40.36 % of base)
-260 : 14369.dasm (-35.91 % of base)
-260 : 1460.dasm (-27.66 % of base)
-260 : 5738.dasm (-39.88 % of base)
-240 : 279.dasm (-32.97 % of base)
-212 : 4405.dasm (-33.12 % of base)
-204 : 19612.dasm (-25.76 % of base)
-204 : 5742.dasm (-32.69 % of base)
-204 : 627.dasm (-30.18 % of base)
-204 : 8768.dasm (-30.00 % of base)
-204 : 11785.dasm (-32.28 % of base)
-184 : 1717.dasm (-31.72 % of base)
53 total files with Code Size differences (51 improved, 2 regressed), 27 unchanged.
Top method regressions (bytes):
20 (6.25 % of base) : 14880.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) : 1034.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) : 692.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) : 1733.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-32.98 % of base) : 5666.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) : 698.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-37.35 % of base) : 1607.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) : 5034.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) : 5272.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-296 (-39.78 % of base) : 8594.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) : 7324.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) : 5738.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.91 % of base) : 14369.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
-260 (-27.66 % of base) : 1460.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-240 (-32.97 % of base) : 279.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-212 (-33.12 % of base) : 4405.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-25.76 % of base) : 19612.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
-204 (-32.28 % of base) : 11785.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-204 (-30.00 % of base) : 8768.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-204 (-32.69 % of base) : 5742.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) : 627.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 (-31.72 % of base) : 1717.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):
20 (6.25 % of base) : 14880.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) : 1034.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) : 1733.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-42.63 % of base) : 692.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) : 11171.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-92 (-41.07 % of base) : 11665.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-268 (-40.36 % of base) : 7324.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) : 5738.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) : 8594.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) : 5079.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-316 (-38.54 % of base) : 5034.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) : 13711.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-92 (-38.33 % of base) : 10822.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-148 (-37.76 % of base) : 7712.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) : 5272.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-372 (-37.35 % of base) : 1607.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) : 1719.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) : 5033.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) : 14910.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
-92 (-36.51 % of base) : 7714.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) : 6790.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
-92 (-35.94 % of base) : 3165.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:CreateIListInfo[System.__Canon](System.Text.Json.JsonSerializerOptions,System.Text.Json.Serialization.Metadata.JsonCollectionInfoValues`1[System.__Canon]):System.Text.Json.Serialization.Metadata.JsonTypeInfo`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: 561672 (overridden on cmd)
Total bytes of diff: 561060 (overridden on cmd)
Total bytes of delta: -612 (-0.11 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
12 : 3680.dasm (7.89 % of base)
12 : 3917.dasm (7.89 % of base)
12 : 3949.dasm (8.33 % of base)
12 : 4129.dasm (7.14 % of base)
12 : 4199.dasm (6.82 % of base)
12 : 4876.dasm (6.67 % of base)
4 : 3599.dasm (3.70 % of base)
4 : 3580.dasm (3.70 % of base)
4 : 3999.dasm (3.70 % of base)
4 : 4009.dasm (3.70 % of base)
4 : 4049.dasm (3.70 % of base)
4 : 4059.dasm (3.70 % of base)
4 : 4069.dasm (3.70 % of base)
4 : 4109.dasm (3.70 % of base)
4 : 4119.dasm (3.70 % of base)
4 : 4149.dasm (3.70 % of base)
4 : 4159.dasm (3.70 % of base)
4 : 4169.dasm (3.70 % of base)
4 : 4179.dasm (3.70 % of base)
4 : 4842.dasm (2.94 % of base)
Top file improvements (bytes):
-60 : 3740.dasm (-14.02 % of base)
-36 : 1589.dasm (-15.79 % of base)
-36 : 1012.dasm (-28.12 % of base)
-36 : 2174.dasm (-15.79 % of base)
-32 : 1676.dasm (-17.39 % of base)
-32 : 2596.dasm (-25.81 % of base)
-32 : 1399.dasm (-21.62 % of base)
-32 : 1639.dasm (-21.62 % of base)
-32 : 2798.dasm (-21.62 % of base)
-32 : 2841.dasm (-21.62 % of base)
-28 : 1398.dasm (-21.88 % of base)
-28 : 1395.dasm (-28.00 % of base)
-28 : 1638.dasm (-21.88 % of base)
-28 : 2799.dasm (-7.78 % of base)
-28 : 1394.dasm (-14.58 % of base)
-24 : 3736.dasm (-4.48 % of base)
-20 : 2643.dasm (-8.93 % of base)
-4 : 3362.dasm (-3.70 % of base)
-4 : 3355.dasm (-3.70 % of base)
-4 : 3617.dasm (-3.70 % of base)
60 total files with Code Size differences (35 improved, 25 regressed), 3 unchanged.
Top method regressions (bytes):
12 (7.89 % of base) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (8.33 % of base) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 3680.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (6.67 % of base) : 4876.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.14 % of base) : 4129.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.82 % of base) : 4199.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3580.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (2.94 % of base) : 4842.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (2.94 % of base) : 4844.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 3587.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 3999.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4009.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4049.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4059.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4069.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (2.94 % of base) : 4846.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 4109.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4119.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4149.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4159.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method improvements (bytes):
-60 (-14.02 % of base) : 3740.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier1)
-36 (-28.12 % of base) : 1012.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) : 2174.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) : 1589.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)
-32 (-21.62 % of base) : 2798.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-32 (-21.62 % of base) : 2841.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
-32 (-21.62 % of base) : 1399.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
-32 (-21.62 % of base) : 1639.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
-32 (-25.81 % of base) : 2596.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-32 (-17.39 % of base) : 1676.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
-28 (-7.78 % of base) : 2799.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-28 (-21.88 % of base) : 1398.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
-28 (-21.88 % of base) : 1638.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
-28 (-28.00 % of base) : 1395.dasm - 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 Tier1)
-28 (-14.58 % of base) : 1394.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
-24 (-4.48 % of base) : 3736.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-20 (-8.93 % of base) : 2643.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 (Tier1)
-4 (-3.70 % of base) : 3355.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 3795.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3634.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
Top method regressions (percentages):
12 (8.33 % of base) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (7.89 % of base) : 3680.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
12 (7.14 % of base) : 4129.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.82 % of base) : 4199.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
12 (6.67 % of base) : 4876.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
4 (3.70 % of base) : 3580.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 3587.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
4 (3.70 % of base) : 3999.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4009.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4049.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4059.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4069.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4109.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4119.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4149.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4159.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 3599.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
4 (3.70 % of base) : 4169.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
4 (3.70 % of base) : 4179.dasm - NullableTest41:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method improvements (percentages):
-36 (-28.12 % of base) : 1012.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-28 (-28.00 % of base) : 1395.dasm - 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 Tier1)
-32 (-25.81 % of base) : 2596.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-28 (-21.88 % of base) : 1398.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
-28 (-21.88 % of base) : 1638.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
-32 (-21.62 % of base) : 2798.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-32 (-21.62 % of base) : 2841.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
-32 (-21.62 % of base) : 1399.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
-32 (-21.62 % of base) : 1639.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
-32 (-17.39 % of base) : 1676.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
-36 (-15.79 % of base) : 2174.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) : 1589.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)
-28 (-14.58 % of base) : 1394.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
-60 (-14.02 % of base) : 3740.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier1)
-20 (-8.93 % of base) : 2643.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 (Tier1)
-28 (-7.78 % of base) : 2799.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-24 (-4.48 % of base) : 3736.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
-4 (-3.70 % of base) : 3355.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-4 (-3.70 % of base) : 3795.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-4 (-3.70 % of base) : 3634.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (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: 1150104 (overridden on cmd)
Total bytes of diff: 1149372 (overridden on cmd)
Total bytes of delta: -732 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
804 : 14261.dasm (88.16 % of base)
60 : 6051.dasm (41.67 % of base)
20 : 18169.dasm (6.02 % of base)
4 : 1949.dasm (2.50 % of base)
4 : 1962.dasm (2.38 % of base)
Top file improvements (bytes):
-72 : 10584.dasm (-19.35 % of base)
-72 : 8912.dasm (-13.74 % of base)
-64 : 3517.dasm (-20.00 % of base)
-64 : 2938.dasm (-18.82 % of base)
-44 : 12392.dasm (-23.91 % of base)
-44 : 12396.dasm (-17.74 % of base)
-44 : 2897.dasm (-23.40 % of base)
-40 : 9715.dasm (-16.95 % of base)
-24 : 12547.dasm (-24.00 % of base)
-24 : 14326.dasm (-2.94 % of base)
-24 : 18230.dasm (-17.65 % of base)
-24 : 2895.dasm (-21.43 % of base)
-24 : 3333.dasm (-4.51 % of base)
-24 : 11910.dasm (-25.00 % of base)
-20 : 13498.dasm (-15.15 % of base)
-20 : 13957.dasm (-13.16 % of base)
-20 : 18304.dasm (-17.86 % of base)
-20 : 8903.dasm (-14.29 % of base)
-20 : 8906.dasm (-16.13 % of base)
-20 : 8909.dasm (-13.16 % of base)
43 total files with Code Size differences (38 improved, 5 regressed), 30 unchanged.
Top method regressions (bytes):
804 (88.16 % of base) : 14261.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
60 (41.67 % of base) : 6051.dasm - Microsoft.Build.Collections.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
20 (6.02 % of base) : 18169.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
4 (2.50 % of base) : 1949.dasm - Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)
4 (2.38 % of base) : 1962.dasm - Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)
Top method improvements (bytes):
-72 (-13.74 % of base) : 8912.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)
-72 (-19.35 % of base) : 10584.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)
-64 (-20.00 % of base) : 3517.dasm - Microsoft.Build.Execution.ProjectInstance:CreateCloneDictionary[System.__Canon](System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.StringComparer):System.Collections.ObjectModel.ReadOnlyDictionary`2[System.__Canon,System.__Canon] (FullOpts)
-64 (-18.82 % of base) : 2938.dasm - Microsoft.Build.Internal.Tracing:List[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]) (FullOpts)
-44 (-23.40 % of base) : 2897.dasm - Microsoft.Build.Internal.Utilities:ToArray[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.__Canon[] (FullOpts)
-44 (-23.91 % of base) : 12392.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
-44 (-17.74 % of base) : 12396.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
-40 (-16.95 % of base) : 9715.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
-24 (-4.51 % of base) : 3333.dasm - Microsoft.Build.Execution.BuildResult:KeepSpecificTargetResults(System.Collections.Generic.IReadOnlyCollection`1[System.String]):this (FullOpts)
-24 (-21.43 % of base) : 2895.dasm - Microsoft.Build.Internal.Utilities:ToEnumerable[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-24 (-24.00 % of base) : 12547.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)
-24 (-17.65 % of base) : 18230.dasm - System.Runtime.InteropServices.MemoryMarshal:<ToEnumerable>g__FromString|18_0[System.__Canon](System.String,int,int):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
-24 (-2.94 % of base) : 14326.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendEnum>g__GrowAndAppendFormatted|21_0[System.__Canon](byref,System.__Canon,int,byref,System.String):ubyte (FullOpts)
-24 (-25.00 % of base) : 11910.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 (-16.67 % of base) : 6411.dasm - Microsoft.Build.Shared.CollectionHelpers:SetEquivalent[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-20 (-14.29 % of base) : 8903.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][]) (FullOpts)
-20 (-16.13 % of base) : 8906.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int) (FullOpts)
-20 (-13.16 % of base) : 8909.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
-20 (-16.13 % of base) : 10582.dasm - System.MemoryExtensions:Sort[System.__Canon,System.Nullable`1[int]](System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]]) (FullOpts)
-20 (-17.86 % of base) : 18304.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):byref (FullOpts)
Top method regressions (percentages):
804 (88.16 % of base) : 14261.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
60 (41.67 % of base) : 6051.dasm - Microsoft.Build.Collections.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
20 (6.02 % of base) : 18169.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
4 (2.50 % of base) : 1949.dasm - Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)
4 (2.38 % of base) : 1962.dasm - Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)
Top method improvements (percentages):
-24 (-25.00 % of base) : 11910.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) : 12006.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)
-24 (-24.00 % of base) : 12547.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) : 12392.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
-44 (-23.40 % of base) : 2897.dasm - Microsoft.Build.Internal.Utilities:ToArray[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.__Canon[] (FullOpts)
-24 (-21.43 % of base) : 2895.dasm - Microsoft.Build.Internal.Utilities:ToEnumerable[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-20 (-20.83 % of base) : 12003.dasm - System.TupleExtensions:ToValueTuple[System.__Canon,System.Nullable`1[int]](System.Tuple`2[System.__Canon,System.Nullable`1[int]]):System.ValueTuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
-64 (-20.00 % of base) : 3517.dasm - Microsoft.Build.Execution.ProjectInstance:CreateCloneDictionary[System.__Canon](System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.StringComparer):System.Collections.ObjectModel.ReadOnlyDictionary`2[System.__Canon,System.__Canon] (FullOpts)
-72 (-19.35 % of base) : 10584.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)
-64 (-18.82 % of base) : 2938.dasm - Microsoft.Build.Internal.Tracing:List[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]) (FullOpts)
-20 (-17.86 % of base) : 18304.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):byref (FullOpts)
-44 (-17.74 % of base) : 12396.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
-24 (-17.65 % of base) : 18230.dasm - System.Runtime.InteropServices.MemoryMarshal:<ToEnumerable>g__FromString|18_0[System.__Canon](System.String,int,int):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
-40 (-16.95 % of base) : 9715.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
-20 (-16.67 % of base) : 6411.dasm - Microsoft.Build.Shared.CollectionHelpers:SetEquivalent[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
-20 (-16.67 % of base) : 14634.dasm - System.Runtime.Intrinsics.Vector128:StoreLowerUnsafe[System.__Canon](System.Runtime.Intrinsics.Vector128`1[System.__Canon],byref,ulong) (FullOpts)
-20 (-16.13 % of base) : 8906.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int) (FullOpts)
-20 (-16.13 % of base) : 10582.dasm - System.MemoryExtensions:Sort[System.__Canon,System.Nullable`1[int]](System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]]) (FullOpts)
-20 (-15.15 % of base) : 13498.dasm - System.Threading.Tasks.Task`1[System.__Canon]:ContinueWith[ubyte](System.Func`2[System.__Canon,ubyte],System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task`1[ubyte]:this (FullOpts)
-20 (-14.29 % of base) : 8903.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][]) (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: 2258308 (overridden on cmd)
Total bytes of diff: 2235868 (overridden on cmd)
Total bytes of delta: -22440 (-0.99 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-428 : 40.dasm (-43.85 % of base)
-428 : 23.dasm (-41.96 % of base)
-372 : 1342.dasm (-36.47 % of base)
-372 : 130.dasm (-36.19 % of base)
-296 : 2003.dasm (-39.78 % of base)
-260 : 1370.dasm (-28.14 % of base)
-260 : 2909.dasm (-43.92 % of base)
-260 : 136.dasm (-40.37 % of base)
-260 : 4405.dasm (-40.88 % of base)
-260 : 3955.dasm (-40.37 % of base)
-240 : 5314.dasm (-32.97 % of base)
-212 : 3983.dasm (-33.12 % of base)
-204 : 4170.dasm (-34.46 % of base)
-204 : 10081.dasm (-17.65 % of base)
-204 : 1608.dasm (-32.48 % of base)
-204 : 9951.dasm (-30.00 % of base)
-204 : 16445.dasm (-20.00 % of base)
-200 : 17781.dasm (-36.50 % of base)
-184 : 1385.dasm (-31.72 % of base)
-184 : 2285.dasm (-15.44 % of base)
54 total files with Code Size differences (54 improved, 0 regressed), 19 unchanged.
Top method improvements (bytes):
-428 (-41.96 % of base) : 23.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) : 40.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-372 (-36.47 % of base) : 1342.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-372 (-36.19 % of base) : 130.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)
-296 (-39.78 % of base) : 2003.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) : 4405.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 3955.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) : 136.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) : 1370.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-260 (-43.92 % of base) : 2909.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-240 (-32.97 % of base) : 5314.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
-212 (-33.12 % of base) : 3983.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
-204 (-20.00 % of base) : 16445.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (Tier0)
-204 (-17.65 % of base) : 10081.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 (Tier0)
-204 (-30.00 % of base) : 9951.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
-204 (-34.46 % of base) : 4170.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
-204 (-32.48 % of base) : 1608.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
-200 (-36.50 % of base) : 17781.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+TupleExtraData:<EqualsIgnoringTupleUnderlyingType>g__areEqual|20_0[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier0)
-184 (-31.72 % of base) : 1385.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) : 2285.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
Top method improvements (percentages):
-260 (-43.92 % of base) : 2909.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-428 (-43.85 % of base) : 40.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-428 (-41.96 % of base) : 23.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-148 (-41.57 % of base) : 7351.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
-148 (-41.57 % of base) : 6020.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-148 (-41.11 % of base) : 5411.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
-92 (-41.07 % of base) : 10203.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
-92 (-41.07 % of base) : 4350.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]] (Tier0)
-260 (-40.88 % of base) : 4405.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-260 (-40.37 % of base) : 3955.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) : 136.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-148 (-40.22 % of base) : 7401.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-148 (-40.22 % of base) : 5802.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 (Tier0)
-148 (-39.78 % of base) : 16506.dasm - System.Collections.Immutable.ImmutableList:IndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (Tier0)
-296 (-39.78 % of base) : 2003.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) : 10.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-92 (-39.66 % of base) : 5032.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):System.__Canon (Tier0)
-92 (-39.66 % of base) : 10749.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier0)
-92 (-39.66 % of base) : 7509.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] (Tier0)
-92 (-39.66 % of base) : 5930.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] (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: 1051504 (overridden on cmd)
Total bytes of diff: 1043772 (overridden on cmd)
Total bytes of delta: -7732 (-0.74 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
68 : 6335.dasm (8.99 % of base)
64 : 4901.dasm (5.39 % of base)
64 : 9500.dasm (11.76 % of base)
48 : 7121.dasm (16.67 % of base)
28 : 9509.dasm (7.87 % of base)
24 : 9492.dasm (6.25 % of base)
24 : 5696.dasm (23.08 % of base)
24 : 6087.dasm (31.58 % of base)
24 : 2879.dasm (6.59 % of base)
24 : 9033.dasm (11.32 % of base)
20 : 5727.dasm (16.13 % of base)
20 : 69.dasm (6.25 % of base)
12 : 12754.dasm (5.45 % of base)
12 : 2882.dasm (1.01 % of base)
8 : 2067.dasm (1.36 % of base)
4 : 5725.dasm (3.03 % of base)
4 : 7629.dasm (1.89 % of base)
4 : 11710.dasm (3.45 % of base)
4 : 4256.dasm (3.45 % of base)
Top file improvements (bytes):
-384 : 9486.dasm (-25.26 % of base)
-328 : 3040.dasm (-23.98 % of base)
-328 : 992.dasm (-22.47 % of base)
-228 : 2959.dasm (-7.52 % of base)
-212 : 10.dasm (-30.99 % of base)
-212 : 13.dasm (-33.33 % of base)
-212 : 3400.dasm (-12.62 % of base)
-204 : 11198.dasm (-7.07 % of base)
-200 : 3047.dasm (-19.69 % of base)
-188 : 8846.dasm (-21.96 % of base)
-184 : 67.dasm (-26.14 % of base)
-184 : 457.dasm (-24.34 % of base)
-176 : 3293.dasm (-27.85 % of base)
-160 : 760.dasm (-17.62 % of base)
-136 : 6085.dasm (-18.68 % of base)
-136 : 2290.dasm (-30.63 % of base)
-132 : 488.dasm (-19.76 % of base)
-128 : 853.dasm (-27.12 % of base)
-128 : 12798.dasm (-29.91 % of base)
-128 : 470.dasm (-18.71 % of base)
68 total files with Code Size differences (49 improved, 19 regressed), 20 unchanged.
Top method regressions (bytes):
68 (8.99 % of base) : 6335.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) : 9500.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) : 4901.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) : 7121.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) : 9509.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
24 (6.25 % of base) : 9492.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
24 (11.32 % of base) : 9033.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
24 (23.08 % of base) : 5696.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) : 6087.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) : 2879.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) : 5727.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)
12 (5.45 % of base) : 12754.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)
12 (1.01 % of base) : 2882.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
8 (1.36 % of base) : 2067.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
4 (1.89 % of base) : 7629.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
4 (3.03 % of base) : 5725.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) : 4256.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) : 11710.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) : 9486.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) : 992.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) : 3040.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 (-7.52 % of base) : 2959.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-212 (-12.62 % of base) : 3400.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)
-204 (-7.07 % of base) : 11198.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
-200 (-19.69 % of base) : 3047.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)
-188 (-21.96 % of base) : 8846.dasm - System.Linq.Enumerable:TryGetLast[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],byref):System.ValueTuple`2[System.__Canon,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) : 3293.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-160 (-17.62 % of base) : 760.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)
-136 (-18.68 % of base) : 6085.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) : 2290.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) : 853.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) : 12798.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
Top method regressions (percentages):
24 (31.58 % of base) : 6087.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) : 5696.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) : 7121.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) : 5727.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) : 9500.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
24 (11.32 % of base) : 9033.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
68 (8.99 % of base) : 6335.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) : 9509.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) : 2879.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) : 9492.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)
12 (5.45 % of base) : 12754.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)
64 (5.39 % of base) : 4901.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) : 4256.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) : 11710.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) : 5725.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) : 7629.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
8 (1.36 % of base) : 2067.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
12 (1.01 % of base) : 2882.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):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) : 2212.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) : 2290.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-72 (-30.51 % of base) : 6770.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) : 12798.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
-176 (-27.85 % of base) : 3293.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-128 (-27.12 % of base) : 853.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) : 2316.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) : 5715.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) : 3151.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) : 9486.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) : 3129.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) : 4968.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) : 2191.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-24 (-24.00 % of base) : 2350.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: 1662480 (overridden on cmd)
Total bytes of diff: 1645316 (overridden on cmd)
Total bytes of delta: -17164 (-1.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
124 : 6211.dasm (12.55 % of base)
48 : 5862.dasm (10.62 % of base)
48 : 5873.dasm (10.62 % of base)
48 : 5883.dasm (10.81 % of base)
48 : 5886.dasm (10.62 % of base)
20 : 8921.dasm (13.51 % of base)
16 : 5810.dasm (8.51 % of base)
8 : 10375.dasm (3.03 % of base)
8 : 10647.dasm (5.88 % of base)
8 : 2050.dasm (4.26 % of base)
4 : 12237.dasm (5.56 % of base)
4 : 2282.dasm (1.59 % of base)
4 : 4696.dasm (0.98 % of base)
Top file improvements (bytes):
-328 : 9574.dasm (-29.29 % of base)
-328 : 3244.dasm (-24.33 % of base)
-228 : 8857.dasm (-28.22 % of base)
-212 : 245.dasm (-30.99 % of base)
-212 : 587.dasm (-33.12 % of base)
-208 : 6046.dasm (-23.01 % of base)
-208 : 7528.dasm (-23.42 % of base)
-200 : 5123.dasm (-11.79 % of base)
-188 : 12398.dasm (-23.86 % of base)
-184 : 249.dasm (-24.34 % of base)
-184 : 540.dasm (-26.14 % of base)
-172 : 8240.dasm (-22.63 % of base)
-172 : 9573.dasm (-18.53 % of base)
-172 : 5225.dasm (-28.48 % of base)
-164 : 4920.dasm (-22.04 % of base)
-160 : 13749.dasm (-17.62 % of base)
-152 : 9575.dasm (-14.02 % of base)
-144 : 6206.dasm (-21.95 % of base)
-144 : 9902.dasm (-24.16 % of base)
-144 : 6006.dasm (-20.81 % of base)
68 total files with Code Size differences (55 improved, 13 regressed), 21 unchanged.
Top method regressions (bytes):
124 (12.55 % of base) : 6211.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) : 5883.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) : 5886.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) : 5873.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) : 5862.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) : 8921.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) : 5810.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) : 10375.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) : 2050.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) : 10647.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) : 4696.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) : 2282.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) : 12237.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
Top method improvements (bytes):
-328 (-29.29 % of base) : 9574.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) : 3244.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) : 8857.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) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-208 (-23.01 % of base) : 6046.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) : 7528.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) : 5123.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) : 12398.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) : 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)
-172 (-22.63 % of base) : 8240.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) : 9573.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) : 5225.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) : 4920.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) : 13749.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) : 9575.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) : 6006.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 (-24.16 % of base) : 9902.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) : 6206.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) : 8921.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) : 6211.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) : 5883.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) : 5886.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) : 5873.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) : 5862.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) : 5810.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) : 10647.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) : 12237.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
8 (4.26 % of base) : 2050.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) : 10375.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) : 2282.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) : 4696.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) : 8491.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) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-60 (-32.61 % of base) : 10379.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-24 (-31.58 % of base) : 10875.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) : 7467.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) : 4714.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) : 4963.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) : 5641.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) : 9779.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) : 9574.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) : 5225.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) : 8953.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) : 8857.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) : 4706.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) : 5221.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-72 (-28.12 % of base) : 9915.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) : 9397.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) : 4589.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) : 4961.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 93,749 contexts (40,209 MinOpts, 53,540 FullOpts).
MISSED contexts: base: 3,301 (2.30%), diff: 45,642 (31.75%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 918,586 | -3,514 |
benchmarks.run.windows.x64.checked.mch | 637,100 | -4,369 |
benchmarks.run_pgo.windows.x64.checked.mch | 1,575,206 | -12,251 |
benchmarks.run_tiered.windows.x64.checked.mch | 1,518,103 | -14,901 |
coreclr_tests.run.windows.x64.checked.mch | 379,814 | +12 |
libraries.pmi.windows.x64.checked.mch | 837,452 | -17,566 |
libraries_tests.run.windows.x64.Release.mch | 1,540,227 | -23,414 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 745,455 | -8,097 |
realworld.run.windows.x64.checked.mch | 1,799,593 | -14,779 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 566,802 | -3,837 |
benchmarks.run_pgo.windows.x64.checked.mch | 1,172,226 | -11,291 |
benchmarks.run_tiered.windows.x64.checked.mch | 1,333,260 | -13,988 |
coreclr_tests.run.windows.x64.checked.mch | 289,459 | +114 |
libraries_tests.run.windows.x64.Release.mch | 1,489,732 | -22,461 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 351,784 | +323 |
benchmarks.run.windows.x64.checked.mch | 636,868 | -4,369 |
benchmarks.run_pgo.windows.x64.checked.mch | 402,980 | -960 |
benchmarks.run_tiered.windows.x64.checked.mch | 184,843 | -913 |
coreclr_tests.run.windows.x64.checked.mch | 90,355 | -102 |
libraries.pmi.windows.x64.checked.mch | 837,452 | -17,566 |
libraries_tests.run.windows.x64.Release.mch | 50,495 | -953 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 745,455 | -8,097 |
realworld.run.windows.x64.checked.mch | 1,799,593 | -14,779 |
@@ -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,68 +7,37 @@
; No matching PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 3, 3 ) ref -> rsi this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel>
-; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> rbx single-def+; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel>
+; 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,T05] ( 3, 4 ) long -> rdi "spilling helperCall"+; V03 tmp1 [V03,T03] ( 2, 4 ) long -> rdi "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp3 [V05,T08] ( 2, 4 ) long -> rbp "argument with side effect"
-; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V07 rat0 [V07,T01] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable"
-; V08 rat1 [V08,T06] ( 3, 4 ) long -> rbp "runtime lookup"
-; V09 rat2 [V09,T02] ( 3, 5.60) long -> rcx "spilling expr"
-; V10 rat3 [V10,T04] ( 3, 4.48) long -> rbp "fgMakeTemp is creating a new local variable"+; V05 tmp3 [V05,T04] ( 2, 4 ) long -> rbx "argument with side effect"
+; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ;-; Lcl frame size = 40+; Lcl frame size = 48
G_M14728_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi- push rbp push rbx- sub rsp, 40
- mov qword ptr [rsp+0x20], rdx+ sub rsp, 48
+ mov qword ptr [rsp+0x28], rdx mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx- ;; size=19 bbWeight=1 PerfScore 5.75
-G_M14728_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rdi, qword ptr [rcx+0x10]
- test rdi, rdi
- je SHORT G_M14728_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M14728_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M14728_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M14728_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref+ ;; size=18 bbWeight=1 PerfScore 4.75
+G_M14728_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 rdi, rax- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M14728_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M14728_IG08
- ;; size=11 bbWeight=1 PerfScore 6.00
-G_M14728_IG06: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rbp, qword ptr [rcx+0x18]
- test rbp, rbp
- je SHORT G_M14728_IG08
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M14728_IG07: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M14728_IG09
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M14728_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 ; gcr arg pop 0- mov rbp, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63
-G_M14728_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref+ mov rbx, rax mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rdi
@@ -78,22 +47,21 @@ G_M14728_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]- mov rcx, rbp
- call CORINFO_HELP_ISINSTANCEOFINTERFACE+ mov rcx, rbx
+ call CORINFO_HELP_INITINSTCLASS ; gcrRegs -[rdx]
; gcr arg pop 0
nop - ;; size=27 bbWeight=1 PerfScore 5.50
-G_M14728_IG10: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40+ ;; size=69 bbWeight=1 PerfScore 9.00
+G_M14728_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48 pop rbx- pop rbp pop rsi
pop rdi
ret - ;; size=9 bbWeight=1 PerfScore 3.25+ ;; size=8 bbWeight=1 PerfScore 2.75 -; Total bytes of code 134, prolog size 13, PerfScore 32.21, instruction count 42, allocated bytes for code 134 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)+; Total bytes of code 95, prolog size 12, PerfScore 16.50, instruction count 28, allocated bytes for code 95 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts) ; ============================================================
Unwind Info:
@@ -101,13 +69,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- 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: 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)
@@ -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:
@@ -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:
@@ -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:
@@ -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:
@@ -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,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:
@@ -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,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)
@@ -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:
@@ -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:
@@ -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_M27753_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_M27753_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_M27753_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M27753_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_M27753_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M27753_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M27753_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_M27753_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_M27753_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx] +[rax]
nop - ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27753_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=42 bbWeight=1 PerfScore 9.00
+G_M27753_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=f6189396) for method System.Linq.Enumerable:SingleOrDefault[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=f6189396) for method System.Linq.Enumerable:SingleOrDefault[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)
@@ -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)
@@ -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:
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 Tier1)@@ -8,14 +8,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) byref -> zero-ref this single-def-; V01 TypeCtx [V01,T00] ( 5, 4.36) long -> rdx single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) byref -> rbx single-def+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
+; V02 arg1 [V02,T01] ( 3, 3 ) byref -> rbx single-def ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rcx "argument with side effect"
-; V06 rat0 [V06,T04] ( 3, 4 ) long -> rcx "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rcx "spilling expr"
-; V08 rat2 [V08,T03] ( 3, 4.48) long -> rcx "fgMakeTemp is creating a new local variable"+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> rcx "argument with side effect" ;
; Lcl frame size = 48
@@ -26,38 +23,23 @@ G_M49756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, r8
; byrRegs +[rbx]
;; size=13 bbWeight=1 PerfScore 2.50-G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, qword ptr [rdx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M49756_IG05
- ;; size=11 bbWeight=1 PerfScore 6.00
-G_M49756_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, qword ptr [rcx+0x18]
- test rcx, rcx
- je SHORT G_M49756_IG05
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M49756_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M49756_IG06
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M49756_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref+G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rcx, rdx
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.36 PerfScore 0.63
-G_M49756_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov rdx, rbx
; byrRegs +[rdx]- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M49756_IG07: ; bbWeight=1, epilog, nogc, extend+ ;; size=24 bbWeight=1 PerfScore 2.00
+G_M49756_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 70, prolog size 13, PerfScore 16.01, instruction count 19, 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 Tier1)+; Total bytes of code 48, prolog size 13, PerfScore 7.25, instruction count 12, allocated bytes for code 48 (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 Tier1) ; ============================================================
Unwind Info:
@@ -23,26 +23,11 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov gword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
;; size=26 bbWeight=1 PerfScore 5.75-G_M305_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_M305_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M305_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_M305_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M305_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_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea r9, [rbp-0x10]
mov rcx, qword ptr [rbp-0x18]
mov rdx, gword ptr [rbp+0x18]
@@ -52,14 +37,14 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx r8] +[rax]
nop - ;; size=23 bbWeight=1 PerfScore 6.75
-G_M305_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=46 bbWeight=1 PerfScore 10.00
+G_M305_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 14, PerfScore 28.30, instruction count 29, allocated bytes for code 111 (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 78, prolog size 14, PerfScore 17.50, instruction count 20, allocated bytes for code 78 (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:
@@ -23,26 +23,11 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov gword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
;; size=26 bbWeight=1 PerfScore 5.75-G_M305_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_M305_IG04
- ;; size=15 bbWeight=1 PerfScore 7.00
-G_M305_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_M305_IG05
- ;; size=18 bbWeight=0.80 PerfScore 6.40
-G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M305_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_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea r9, [rbp-0x10]
mov rcx, qword ptr [rbp-0x18]
mov rdx, gword ptr [rbp+0x18]
@@ -52,14 +37,14 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rdx r8] +[rax]
nop - ;; size=23 bbWeight=1 PerfScore 6.75
-G_M305_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=46 bbWeight=1 PerfScore 10.00
+G_M305_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 14, PerfScore 28.30, instruction count 29, allocated bytes for code 111 (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 78, prolog size 14, PerfScore 17.50, instruction count 20, allocated bytes for code 78 (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:
@@ -13,6 +13,8 @@
; V02 tmp1 [V02,T01] ( 4, 2.99) long -> rsi "Inline stloc first use temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"+; V05 tmp4 [V05,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V06 tmp5 [V06,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -39,16 +41,26 @@ G_M56886_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi+ 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=14 bbWeight=1 PerfScore 12.33+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=60 bbWeight=1 PerfScore 26.83 G_M56886_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 56, prolog size 9, PerfScore 27.17, instruction count 18, allocated bytes for code 56 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)+
+; Total bytes of code 102, prolog size 9, PerfScore 41.67, instruction count 24, allocated bytes for code 102 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (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 (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:
1[long]):System.Numerics.Vector
1double@@ -5,18 +5,12 @@
; rsp based frame
; partially interruptible
; No matching PGO data-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments
;
; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rcx single-def
; V01 arg0 [V01,T00] ( 3, 6 ) byref -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V03 tmp1 [V03 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument"
-;* V04 tmp2 [V04 ] ( 0, 0 ) simd32 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[int]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[long]>
-;* V07 tmp5 [V07 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[double]>
-; V08 cse0 [V08,T02] ( 3, 3 ) simd32 -> mm0 "CSE - aggressive" ;
; Lcl frame size = 0
@@ -25,27 +19,17 @@ G_M18713_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=3 bbWeight=1 PerfScore 1.00
G_M18713_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref
; byrRegs +[rcx rdx]- vmovups ymm0, ymmword ptr [rdx]
- vpsrlq ymm1, ymm0, 32
- vpxorq ymm1, ymm1, qword ptr [reloc @RWD00] {1to4}
- vsubpd ymm1, ymm1, qword ptr [reloc @RWD08] {1to4}
- vpblendd ymm0, ymm0, ymmword ptr [reloc @RWD32], -86
- vaddpd ymm0, ymm0, ymm1+ vcvtqq2pd ymm0, ymmword ptr [rdx] vmovups ymmword ptr [rcx], ymm0
mov rax, rcx
; byrRegs +[rax]- ;; size=50 bbWeight=1 PerfScore 22.25+ ;; size=13 bbWeight=1 PerfScore 8.25 G_M18713_IG03: ; bbWeight=1, epilog, nogc, extend
vzeroupper
ret
;; size=4 bbWeight=1 PerfScore 2.00-RWD00 dq 4530000080000000h
-RWD08 dq 4530000080100000h ; 1.93428223e+25
-RWD16 dd 00000000h, 00000000h, 00000000h, 00000000h
-RWD32 dq 4330000000000000h, 4330000000000000h, 4330000000000000h, 4330000000000000h -
-; Total bytes of code 57, prolog size 3, PerfScore 25.25, instruction count 11, allocated bytes for code 57 (MethodHash=94cdb6e6) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[long]):System.Numerics.Vector`1[double] (FullOpts)+; Total bytes of code 20, prolog size 3, PerfScore 11.25, instruction count 6, allocated bytes for code 20 (MethodHash=94cdb6e6) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[long]):System.Numerics.Vector`1[double] (FullOpts) ; ============================================================
Unwind Info:
1[ulong]):System.Numerics.Vector
1double@@ -5,18 +5,12 @@
; rsp based frame
; partially interruptible
; No matching PGO data-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments
;
; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rcx single-def
; V01 arg0 [V01,T00] ( 3, 6 ) byref -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V03 tmp1 [V03 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument"
-;* V04 tmp2 [V04 ] ( 0, 0 ) simd32 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
-;* V05 tmp3 [V05 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[uint]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[ulong]>
-;* V07 tmp5 [V07 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[double]>
-; V08 cse0 [V08,T02] ( 3, 3 ) simd32 -> mm0 "CSE - aggressive" ;
; Lcl frame size = 0
@@ -25,27 +19,17 @@ G_M56524_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=3 bbWeight=1 PerfScore 1.00
G_M56524_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref
; byrRegs +[rcx rdx]- vmovups ymm0, ymmword ptr [rdx]
- vpsrlq ymm1, ymm0, 32
- vpxorq ymm1, ymm1, qword ptr [reloc @RWD00] {1to4}
- vsubpd ymm1, ymm1, qword ptr [reloc @RWD08] {1to4}
- vpblendd ymm0, ymm0, ymmword ptr [reloc @RWD32], -86
- vaddpd ymm0, ymm0, ymm1+ vcvtuqq2pd ymm0, ymmword ptr [rdx] vmovups ymmword ptr [rcx], ymm0
mov rax, rcx
; byrRegs +[rax]- ;; size=50 bbWeight=1 PerfScore 22.25+ ;; size=13 bbWeight=1 PerfScore 8.25 G_M56524_IG03: ; bbWeight=1, epilog, nogc, extend
vzeroupper
ret
;; size=4 bbWeight=1 PerfScore 2.00-RWD00 dq 4530000000000000h
-RWD08 dq 4530000000100000h ; 1.93428131e+25
-RWD16 dd 00000000h, 00000000h, 00000000h, 00000000h
-RWD32 dq 4330000000000000h, 4330000000000000h, 4330000000000000h, 4330000000000000h -
-; Total bytes of code 57, prolog size 3, PerfScore 25.25, instruction count 11, allocated bytes for code 57 (MethodHash=23b22333) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[ulong]):System.Numerics.Vector`1[double] (FullOpts)+; Total bytes of code 20, prolog size 3, PerfScore 11.25, instruction count 6, allocated bytes for code 20 (MethodHash=23b22333) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[ulong]):System.Numerics.Vector`1[double] (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:
@@ -8,30 +8,37 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T01] ( 3, 3 ) double -> mm0 single-def+; V00 arg0 [V00,T01] ( 4, 4 ) double -> mm0 single-def ; V01 loc0 [V01,T00] ( 2, 2 ) int -> rax ld-addr-op-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V06 tmp4 [V06,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 40+; Lcl frame size = 0
G_M35796_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- sub rsp, 40 vzeroupper - ;; size=7 bbWeight=1 PerfScore 1.25+ ;; size=3 bbWeight=1 PerfScore 1.00 G_M35796_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- call CORINFO_HELP_DBL2INT_OVF
- ; gcr arg pop 0
- nop
- ;; size=6 bbWeight=1 PerfScore 1.25+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32]
+ vcvttsd2si eax, xmm0
+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1
+ ;; size=49 bbWeight=1 PerfScore 20.50 G_M35796_IG03: ; bbWeight=1, epilog, nogc, extend- add rsp, 40 ret - ;; size=5 bbWeight=1 PerfScore 1.25+ ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h
+RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh -; Total bytes of code 18, prolog size 7, PerfScore 3.75, instruction count 6, allocated bytes for code 18 (MethodHash=aa74742b) for method System.Int32:CreateChecked[double](double):int (FullOpts)+
+; Total bytes of code 53, prolog size 3, PerfScore 22.50, instruction count 9, allocated bytes for code 53 (MethodHash=aa74742b) for method System.Int32:CreateChecked[double](double):int (FullOpts) ; ============================================================
Unwind Info:
@@ -39,9 +46,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
@@ -8,30 +8,37 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T01] ( 3, 3 ) double -> mm0 single-def+; V00 arg0 [V00,T01] ( 4, 4 ) double -> mm0 single-def ; V01 loc0 [V01,T00] ( 2, 2 ) long -> rax ld-addr-op-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V06 tmp4 [V06,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 40+; Lcl frame size = 0
G_M45338_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- sub rsp, 40 vzeroupper - ;; size=7 bbWeight=1 PerfScore 1.25+ ;; size=3 bbWeight=1 PerfScore 1.00 G_M45338_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- call CORINFO_HELP_DBL2LNG_OVF
- ; gcr arg pop 0
- nop
- ;; size=6 bbWeight=1 PerfScore 1.25+ 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
+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=51 bbWeight=1 PerfScore 20.50 G_M45338_IG03: ; bbWeight=1, epilog, nogc, extend- add rsp, 40 ret - ;; size=5 bbWeight=1 PerfScore 1.25+ ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 18, prolog size 7, PerfScore 3.75, instruction count 6, allocated bytes for code 18 (MethodHash=ad314ee5) for method System.IntPtr:CreateChecked[double](double):long (FullOpts)+
+; Total bytes of code 55, prolog size 3, PerfScore 22.50, instruction count 9, allocated bytes for code 55 (MethodHash=ad314ee5) for method System.IntPtr:CreateChecked[double](double):long (FullOpts) ; ============================================================
Unwind Info:
@@ -39,9 +46,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
@@ -8,30 +8,37 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T01] ( 3, 3 ) double -> mm0 single-def+; V00 arg0 [V00,T01] ( 4, 4 ) double -> mm0 single-def ; V01 loc0 [V01,T00] ( 2, 2 ) long -> rax ld-addr-op-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V06 tmp4 [V06,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;-; Lcl frame size = 40+; Lcl frame size = 0
G_M23790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- sub rsp, 40 vzeroupper - ;; size=7 bbWeight=1 PerfScore 1.25+ ;; size=3 bbWeight=1 PerfScore 1.00 G_M23790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- call CORINFO_HELP_DBL2LNG_OVF
- ; gcr arg pop 0
- nop
- ;; size=6 bbWeight=1 PerfScore 1.25+ 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
+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=51 bbWeight=1 PerfScore 20.50 G_M23790_IG03: ; bbWeight=1, epilog, nogc, extend- add rsp, 40 ret - ;; size=5 bbWeight=1 PerfScore 1.25+ ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 18, prolog size 7, PerfScore 3.75, instruction count 6, allocated bytes for code 18 (MethodHash=872ea311) for method System.Int64:CreateChecked[double](double):long (FullOpts)+
+; Total bytes of code 55, prolog size 3, PerfScore 22.50, instruction count 9, allocated bytes for code 55 (MethodHash=872ea311) for method System.Int64:CreateChecked[double](double):long (FullOpts) ; ============================================================
Unwind Info:
@@ -39,9 +46,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0 FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
@@ -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] (Instrumented 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] (Instrumented 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:
@@ -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:
@@ -9,93 +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.36) 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,T07] ( 3, 4 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T04] ( 3, 5.60) long -> rcx "spilling expr"
-; V11 rat2 [V11,T06] ( 3, 4.48) 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
- mov rcx, qword ptr [rdx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M58319_IG05
- ;; size=19 bbWeight=1 PerfScore 9.25
-G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax]
- mov rcx, qword ptr [rcx+0x18]
- test rcx, rcx
- je SHORT G_M58319_IG05
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M58319_IG04: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M58319_IG05: ; bbWeight=0.36, 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.36 PerfScore 0.63
-G_M58319_IG06: ; 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_IG07: ; 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 118, prolog size 12, PerfScore 26.51, instruction count 37, allocated bytes for code 118 (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:
@@ -103,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,93 +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.36) 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,T07] ( 3, 4 ) long -> rcx "runtime lookup"
-; V10 rat1 [V10,T04] ( 3, 5.60) long -> rcx "spilling expr"
-; V11 rat2 [V11,T06] ( 3, 4.48) 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
- mov rcx, qword ptr [rdx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M58319_IG05
- ;; size=19 bbWeight=1 PerfScore 9.25
-G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax]
- mov rcx, qword ptr [rcx+0x18]
- test rcx, rcx
- je SHORT G_M58319_IG05
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M58319_IG04: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M58319_IG06
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M58319_IG05: ; bbWeight=0.36, 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.36 PerfScore 0.63
-G_M58319_IG06: ; 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_IG07: ; 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 118, prolog size 12, PerfScore 26.51, instruction count 37, allocated bytes for code 118 (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:
@@ -103,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)
@@ -8,13 +8,13 @@
; 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 -> rbx single-def
-; V01 arg0 [V01,T05] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> rbx single-def
+; V01 arg0 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V02 loc0 [V02 ] ( 1, 1 ) struct (64) [rsp+0x138] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon]>
; V03 loc1 [V03 ] ( 5, 5 ) struct (264) [rsp+0x30] 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 -> rbx class-hnd single-def <System.__Canon[]>+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> rsi class-hnd single-def <System.__Canon[]> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"+; V06 tmp1 [V06,T04] ( 2, 4 ) long -> rdi "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V08 tmp3 [V08 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]>
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -25,16 +25,9 @@
; V14 tmp9 [V14,T02] ( 3, 6 ) int -> [rsp+0x28] do-not-enreg[H] hidden-struct-arg "field V08._length (fldOffset=0x8)" P-DEP
;* 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,T10] ( 2, 4 ) long -> rdx "argument with side effect"
-; V18 tmp13 [V18,T11] ( 2, 4 ) long -> rdx "argument with side effect"
-; V19 tmp14 [V19,T12] ( 2, 4 ) long -> rdx "argument with side effect"
-; V20 tmp15 [V20,T13] ( 2, 4 ) long -> rdx "argument with side effect"
-; V21 cse0 [V21,T07] ( 4, 4 ) long -> rdi "CSE - aggressive"
-; V22 rat0 [V22,T08] ( 3, 4 ) long -> rdx "runtime lookup"
-; V23 rat1 [V23,T03] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V24 rat2 [V24,T09] ( 3, 4 ) long -> rdi "runtime lookup"
-; V25 rat3 [V25,T04] ( 3, 5.60) long -> rcx "spilling expr"
-; V26 rat4 [V26,T06] ( 3, 4.48) long -> rdi "fgMakeTemp is creating a new local variable"+; V17 tmp12 [V17,T05] ( 2, 4 ) long -> rdx "argument with side effect"
+; V18 tmp13 [V18,T06] ( 2, 4 ) long -> rdx "argument with side effect"
+; V19 tmp14 [V19,T07] ( 2, 4 ) long -> rdx "argument with side effect" ;
; Lcl frame size = 384
@@ -57,81 +50,67 @@ G_M19942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, rdx
; gcrRegs +[rsi]
;; size=82 bbWeight=1 PerfScore 14.58-G_M19942_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x38]
- mov rdx, qword ptr [rcx+0x10]
- test rdx, rdx
- je SHORT G_M19942_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M19942_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19942_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M19942_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref+G_M19942_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 rdi, rax
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY ; gcr arg pop 0- mov rdx, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M19942_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref lea rcx, [rsp+0x20]
lea r8, [rsp+0x138]+ mov rdx, rdi mov r9d, 8
call [<PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon]]
; gcr arg pop 0- ;; size=25 bbWeight=1 PerfScore 4.25
-G_M19942_IG06: ; bbWeight=1, nogc, extend+ ;; size=67 bbWeight=1 PerfScore 7.75
+G_M19942_IG03: ; bbWeight=1, nogc, extend vmovdqu xmm0, xmmword ptr [rsp+0x20]
vmovdqu xmmword ptr [rsp+0x118], xmm0
;; size=15 bbWeight=1 PerfScore 4.00-G_M19942_IG07: ; bbWeight=1, nogc, extend+G_M19942_IG04: ; bbWeight=1, nogc, extend vmovdqu xmm0, xmmword ptr [rsp+0x20]
vmovdqu xmmword ptr [rsp+0x128], xmm0
;; size=15 bbWeight=1 PerfScore 4.00-G_M19942_IG08: ; bbWeight=1, isz, extend
- mov rcx, qword ptr [rbx+0x38]
- cmp qword ptr [rcx+0x08], 24
- jle SHORT G_M19942_IG11
- ;; size=11 bbWeight=1 PerfScore 6.00
-G_M19942_IG09: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rcx+0x18]
- test rdi, rdi
- je SHORT G_M19942_IG11
- ;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M19942_IG10: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M19942_IG12
- ;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M19942_IG11: ; bbWeight=0.36, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref+G_M19942_IG05: ; bbWeight=1, extend 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_M19942_IG12: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- mov rdx, rdi+ mov rdx, rax lea rcx, [rsp+0x30]
mov r8, rsi
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[rsi r8]
; gcr arg pop 0- mov rdx, rdi+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY
+ ; gcr arg pop 0
+ mov rdx, rax lea rcx, [rsp+0x30]
call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcrRegs +[rax]
; gcr arg pop 0- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rdx, rdi
- lea rcx, [rsp+0x30]
- call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this]+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_MEMCPY ; gcrRegs -[rax]
; gcr arg pop 0- mov rax, rbx+ mov rdx, rax
+ lea rcx, [rsp+0x30]
+ call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this]
+ ; gcr arg pop 0
+ mov rax, rsi ; gcrRegs +[rax]- ;; size=51 bbWeight=1 PerfScore 12.00
-G_M19942_IG13: ; bbWeight=1, epilog, nogc, extend+ ;; size=105 bbWeight=1 PerfScore 16.50
+G_M19942_IG06: ; bbWeight=1, epilog, nogc, extend add rsp, 384
pop rbx
pop rsi
@@ -139,7 +118,7 @@ G_M19942_IG13: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 278, prolog size 76, PerfScore 59.29, instruction count 61, allocated bytes for code 278 (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 295, prolog size 76, PerfScore 49.58, instruction count 58, allocated bytes for code 295 (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:
@@ -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,14 +7,12 @@
; 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 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`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,T03] ( 2, 2 ) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 4 ) long -> rcx "argument with side effect"
-; V06 rat0 [V06,T02] ( 3, 4 ) long -> rcx "runtime lookup"
-; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"+; V04 tmp2 [V04,T01] ( 2, 2 ) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP
+; V05 tmp3 [V05,T02] ( 2, 4 ) long -> rcx "argument with side effect" ;
; Lcl frame size = 48
@@ -25,34 +23,22 @@ G_M45198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdx
; gcrRegs +[rbx]
;; size=13 bbWeight=1 PerfScore 2.50-G_M45198_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, qword ptr [rcx+0x38]
- mov rax, qword ptr [rdx+0x18]
- test rax, rax
- je SHORT G_M45198_IG04
- ;; size=13 bbWeight=1 PerfScore 5.25
-G_M45198_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, rax
- jmp SHORT G_M45198_IG05
- ;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M45198_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref+G_M45198_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_M45198_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdx, rbx
; gcrRegs +[rdx]- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M45198_IG06: ; bbWeight=1, epilog, nogc, extend+ ;; size=21 bbWeight=1 PerfScore 1.75
+G_M45198_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48
pop rbx
tail.jmp [System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastUp[System.__Canon](System.Collections.Immutable.ImmutableArray`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=dd534f71) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`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=dd534f71) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts) ; ============================================================
Unwind Info:
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:
@@ -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:
@@ -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[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:
@@ -13,6 +13,8 @@
; V02 tmp1 [V02,T01] ( 4, 3 ) long -> rsi "Inline stloc first use temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"+; V05 tmp4 [V05,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable"
+; V06 tmp5 [V06,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 40
@@ -39,16 +41,26 @@ G_M56886_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi+ 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=14 bbWeight=1 PerfScore 12.33+ vpbroadcastq xmm0, rax
+ vpternlogq xmm1, xmm2, xmm0, -54
+ vmovd rax, xmm1
+ ;; size=60 bbWeight=1 PerfScore 26.83 G_M56886_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 43E0000000000000h, 43E0000000000000h
+RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh -; Total bytes of code 56, prolog size 9, PerfScore 27.21, instruction count 18, allocated bytes for code 56 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)+
+; Total bytes of code 102, prolog size 9, PerfScore 41.71, instruction count 24, allocated bytes for code 102 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts) ; ============================================================
Unwind Info:
@@ -8,13 +8,15 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T04] ( 3, 3 ) float -> mm0 single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) float -> mm1 single-def+; V00 arg0 [V00,T06] ( 3, 3 ) float -> mm0 single-def
+; V01 arg1 [V01,T07] ( 3, 3 ) float -> mm1 single-def ; V02 arg2 [V02,T02] ( 4, 3 ) int -> r8 single-def
; V03 arg3 [V03,T01] ( 4, 3.50) int -> r9 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T03] ( 3, 2 ) int -> r9 "Inline return value spill temp"
; V06 tmp2 [V06,T00] ( 4, 6 ) int -> rax "Inlining Arg"+; V07 tmp3 [V07,T04] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T05] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" ;
; Lcl frame size = 0
@@ -24,10 +26,16 @@ G_M33552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M33552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vaddss xmm0, xmm1, xmm0
vroundss xmm0, xmm0, xmm0, 9+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0
+ vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13
+ vmovups xmm2, xmmword ptr [reloc @RWD32] vcvttss2si eax, xmm0+ vpbroadcastd xmm0, eax
+ vpternlogd xmm1, xmm2, xmm0, -54
+ vmovd eax, xmm1 cmp eax, r9d
jle SHORT G_M33552_IG04- ;; size=19 bbWeight=1 PerfScore 17.25+ ;; size=64 bbWeight=1 PerfScore 31.75 G_M33552_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M33552_IG05
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -42,8 +50,12 @@ G_M33552_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M33552_IG06: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00+RWD00 dq 0000000000000088h, 0000000000000000h
+RWD16 dq 4F0000004F000000h, 4F0000004F000000h
+RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh -; Total bytes of code 38, prolog size 3, PerfScore 20.88, instruction count 12, allocated bytes for code 38 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)+
+; Total bytes of code 83, prolog size 3, PerfScore 35.38, instruction count 18, allocated bytes for code 83 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (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,572 | 95 | 29 | 1,448 | -5,490 | +1,976 |
benchmarks.run.windows.x64.checked.mch | 1,288 | 110 | 15 | 1,163 | -5,215 | +846 |
benchmarks.run_pgo.windows.x64.checked.mch | 2,171 | 190 | 22 | 1,959 | -13,458 | +1,207 |
benchmarks.run_tiered.windows.x64.checked.mch | 2,466 | 210 | 17 | 2,239 | -16,141 | +1,240 |
coreclr_tests.run.windows.x64.checked.mch | 286 | 45 | 52 | 189 | -543 | +555 |
libraries.crossgen2.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.windows.x64.checked.mch | 4,875 | 623 | 64 | 4,188 | -19,658 | +2,092 |
libraries_tests.run.windows.x64.Release.mch | 2,865 | 329 | 4 | 2,532 | -23,620 | +206 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 1,781 | 163 | 22 | 1,596 | -8,594 | +497 |
realworld.run.windows.x64.checked.mch | 6,457 | 374 | 30 | 6,053 | -16,461 | +1,682 |
smoke_tests.nativeaot.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
23,761 | 2,139 | 255 | 21,367 | -109,180 | +10,301 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 7,966 | 5,329 | 2,637 | 188 (1.51%) | 4,114 (32.98%) |
benchmarks.run.windows.x64.checked.mch | 4,173 | 2 | 4,171 | 361 (4.51%) | 3,436 (42.92%) |
benchmarks.run_pgo.windows.x64.checked.mch | 12,614 | 10,535 | 2,079 | 88 (0.48%) | 5,202 (28.56%) |
benchmarks.run_tiered.windows.x64.checked.mch | 13,384 | 11,178 | 2,206 | 85 (0.47%) | 4,493 (24.59%) |
coreclr_tests.run.windows.x64.checked.mch | 2,040 | 1,284 | 756 | 42 (0.98%) | 1,836 (42.98%) |
libraries.crossgen2.windows.x64.checked.mch | 8,131 | 8 | 8,123 | 0 (0.00%) | 3,083 (26.55%) |
libraries.pmi.windows.x64.checked.mch | 14,125 | 0 | 14,125 | 416 (2.10%) | 5,325 (26.83%) |
libraries_tests.run.windows.x64.Release.mch | 12,309 | 11,871 | 438 | 28 (0.16%) | 4,698 (27.00%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 5,124 | 0 | 5,124 | 737 (7.60%) | 4,170 (43.03%) |
realworld.run.windows.x64.checked.mch | 10,895 | 0 | 10,895 | 1,188 (7.49%) | 4,564 (28.79%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 2,988 | 2 | 2,986 | 168 (2.07%) | 4,721 (58.25%) |
93,749 | 40,209 | 53,540 | 3,301 (2.30%) | 45,642 (31.75%) |
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: 918586 (overridden on cmd)
Total bytes of diff: 915072 (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 : 1419.dasm (68.66 % of base)
92 : 8371.dasm (65.25 % of base)
80 : 14288.dasm (121.21 % of base)
80 : 7890.dasm (103.90 % of base)
80 : 4657.dasm (103.90 % of base)
80 : 5132.dasm (57.55 % of base)
75 : 13444.dasm (60.00 % of base)
74 : 3873.dasm (47.13 % of base)
72 : 5929.dasm (72.00 % of base)
72 : 5145.dasm (53.33 % 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 : 136.dasm (-14.44 % of base)
-132 : 2988.dasm (-25.05 % of base)
-132 : 5782.dasm (-26.19 % of base)
-132 : 10605.dasm (-14.44 % of base)
-103 : 4878.dasm (-24.52 % of base)
-99 : 4131.dasm (-27.20 % of base)
-99 : 2980.dasm (-33.67 % of base)
-99 : 4018.dasm (-25.98 % 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)
-70 : 3030.dasm (-26.92 % of base)
-66 : 10604.dasm (-33.85 % of base)
-66 : 134.dasm (-33.85 % 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) : 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)
-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)
-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) : 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)
-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)
-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) : 10595.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) : 126.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: 637100 (overridden on cmd)
Total bytes of diff: 632731 (overridden on cmd)
Total bytes of delta: -4369 (-0.69 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
177 : 3829.dasm (17.12 % of base)
133 : 7056.dasm (81.60 % of base)
91 : 933.dasm (74.59 % of base)
56 : 1576.dasm (7.88 % of base)
54 : 6490.dasm (38.30 % of base)
50 : 2967.dasm (38.46 % of base)
46 : 1507.dasm (219.05 % of base)
46 : 2964.dasm (56.79 % of base)
45 : 6702.dasm (4.44 % of base)
45 : 672.dasm (75.00 % of base)
45 : 8508.dasm (75.00 % of base)
32 : 4955.dasm (53.33 % of base)
17 : 7097.dasm (5.99 % of base)
6 : 1055.dasm (3.82 % of base)
3 : 1632.dasm (1.38 % of base)
Top file improvements (bytes):
-270 : 3330.dasm (-23.22 % of base)
-219 : 4626.dasm (-18.34 % of base)
-208 : 3736.dasm (-17.84 % of base)
-177 : 233.dasm (-33.27 % of base)
-177 : 8069.dasm (-33.27 % of base)
-171 : 579.dasm (-34.20 % of base)
-152 : 237.dasm (-25.12 % of base)
-152 : 8073.dasm (-25.12 % of base)
-151 : 531.dasm (-25.00 % of base)
-126 : 2389.dasm (-28.25 % of base)
-111 : 462.dasm (-20.71 % of base)
-104 : 5108.dasm (-17.30 % of base)
-102 : 4568.dasm (-29.06 % of base)
-92 : 5199.dasm (-26.29 % of base)
-91 : 2938.dasm (-25.42 % of base)
-83 : 1559.dasm (-25.08 % of base)
-83 : 202.dasm (-22.80 % of base)
-70 : 2523.dasm (-21.34 % of base)
-63 : 1627.dasm (-28.51 % of base)
-63 : 5789.dasm (-29.30 % of base)
43 total files with Code Size differences (28 improved, 15 regressed), 25 unchanged.
Top method regressions (bytes):
177 (17.12 % of base) : 3829.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
133 (81.60 % of base) : 7056.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
91 (74.59 % of base) : 933.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
56 (7.88 % of base) : 1576.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
54 (38.30 % of base) : 6490.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
50 (38.46 % of base) : 2967.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
46 (219.05 % of base) : 1507.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
46 (56.79 % of base) : 2964.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
45 (4.44 % of base) : 6702.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
45 (75.00 % of base) : 8508.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
32 (53.33 % of base) : 4955.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
17 (5.99 % of base) : 7097.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) : 1055.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
3 (1.38 % of base) : 1632.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-270 (-23.22 % of base) : 3330.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) : 4626.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) : 3736.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)
-177 (-33.27 % of base) : 8069.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) : 579.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)
-152 (-25.12 % of base) : 8073.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-25.00 % of base) : 531.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) : 2389.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) : 462.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-104 (-17.30 % of base) : 5108.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) : 4568.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-92 (-26.29 % of base) : 5199.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-91 (-25.42 % of base) : 2938.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-83 (-25.08 % of base) : 1559.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[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) : 2523.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) : 5789.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) : 1627.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
46 (219.05 % of base) : 1507.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
133 (81.60 % of base) : 7056.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
45 (75.00 % of base) : 8508.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
91 (74.59 % of base) : 933.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
46 (56.79 % of base) : 2964.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
32 (53.33 % of base) : 4955.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
50 (38.46 % of base) : 2967.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
54 (38.30 % of base) : 6490.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
177 (17.12 % of base) : 3829.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
56 (7.88 % of base) : 1576.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
17 (5.99 % of base) : 7097.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)
45 (4.44 % of base) : 6702.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
6 (3.82 % of base) : 1055.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
3 (1.38 % of base) : 1632.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) : 579.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)
-177 (-33.27 % of base) : 8069.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) : 1904.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
-63 (-29.30 % of base) : 5789.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-39 (-29.10 % of base) : 2658.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
-102 (-29.06 % of base) : 4568.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-63 (-28.51 % of base) : 1627.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) : 2389.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) : 6123.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
-37 (-27.41 % of base) : 5857.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
-37 (-27.21 % of base) : 1630.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
-92 (-26.29 % of base) : 5199.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
-59 (-25.43 % of base) : 5418.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)
-91 (-25.42 % of base) : 2938.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
-18 (-25.35 % of base) : 1558.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[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)
-152 (-25.12 % of base) : 8073.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-83 (-25.08 % of base) : 1559.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
-37 (-25.00 % of base) : 2289.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[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: 1575206 (overridden on cmd)
Total bytes of diff: 1562955 (overridden on cmd)
Total bytes of delta: -12251 (-0.78 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
143 : 1907.dasm (97.28 % of base)
138 : 3226.dasm (87.34 % of base)
101 : 11199.dasm (12.87 % of base)
99 : 10319.dasm (6.31 % of base)
89 : 12276.dasm (9.02 % of base)
80 : 13435.dasm (103.90 % of base)
80 : 8900.dasm (103.90 % of base)
74 : 1723.dasm (54.01 % of base)
72 : 6102.dasm (78.26 % of base)
72 : 10669.dasm (56.25 % of base)
71 : 16391.dasm (34.80 % of base)
71 : 1890.dasm (112.70 % of base)
46 : 14055.dasm (219.05 % of base)
8 : 12710.dasm (7.21 % of base)
8 : 14895.dasm (7.21 % of base)
8 : 15372.dasm (7.21 % of base)
8 : 17202.dasm (7.21 % of base)
8 : 18334.dasm (7.21 % of base)
8 : 5503.dasm (7.21 % of base)
8 : 6350.dasm (7.21 % of base)
Top file improvements (bytes):
-457 : 1644.dasm (-49.25 % of base)
-425 : 769.dasm (-46.65 % of base)
-404 : 775.dasm (-40.28 % of base)
-400 : 9202.dasm (-38.50 % of base)
-389 : 1554.dasm (-42.19 % of base)
-333 : 15198.dasm (-39.83 % of base)
-313 : 5344.dasm (-41.68 % of base)
-307 : 5910.dasm (-33.15 % of base)
-288 : 9861.dasm (-41.56 % of base)
-276 : 1379.dasm (-32.13 % of base)
-258 : 5114.dasm (-39.94 % of base)
-240 : 9334.dasm (-42.93 % of base)
-210 : 271.dasm (-34.37 % of base)
-195 : 9338.dasm (-36.31 % of base)
-189 : 5310.dasm (-33.69 % of base)
-186 : 10686.dasm (-20.00 % of base)
-181 : 660.dasm (-31.42 % of base)
-162 : 1627.dasm (-34.03 % of base)
-145 : 7087.dasm (-31.39 % of base)
-141 : 3470.dasm (-34.81 % of base)
54 total files with Code Size differences (33 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
143 (97.28 % of base) : 1907.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 3226.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
101 (12.87 % of base) : 11199.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
99 (6.31 % of base) : 10319.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
89 (9.02 % of base) : 12276.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) : 13435.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 8900.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
74 (54.01 % of base) : 1723.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (56.25 % of base) : 10669.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
72 (78.26 % of base) : 6102.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
71 (34.80 % of base) : 16391.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) : 1890.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
46 (219.05 % of base) : 14055.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
8 (7.21 % of base) : 12710.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 14895.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 15372.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 17202.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 18334.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 5503.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 6350.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) : 1644.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 769.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) : 775.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-400 (-38.50 % of base) : 9202.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-389 (-42.19 % of base) : 1554.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.83 % of base) : 15198.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-313 (-41.68 % of base) : 5344.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-307 (-33.15 % of base) : 5910.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)
-288 (-41.56 % of base) : 9861.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)
-276 (-32.13 % of base) : 1379.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 5114.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) : 9334.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) : 271.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-195 (-36.31 % of base) : 9338.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
-189 (-33.69 % of base) : 5310.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
-186 (-20.00 % of base) : 10686.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) : 660.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) : 1627.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)
-145 (-31.39 % of base) : 7087.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier0)
-141 (-34.81 % of base) : 3470.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] (Tier0)
Top method regressions (percentages):
46 (219.05 % of base) : 14055.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
71 (112.70 % of base) : 1890.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
80 (103.90 % of base) : 13435.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
80 (103.90 % of base) : 8900.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
143 (97.28 % of base) : 1907.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 3226.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
72 (78.26 % of base) : 6102.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
72 (56.25 % of base) : 10669.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
74 (54.01 % of base) : 1723.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
71 (34.80 % of base) : 16391.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 (12.87 % of base) : 11199.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
89 (9.02 % of base) : 12276.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)
8 (7.21 % of base) : 12710.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 14895.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 15372.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 17202.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 18334.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 5503.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 6350.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 9809.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) : 1644.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 769.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) : 9334.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.19 % of base) : 1554.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) : 15807.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-313 (-41.68 % of base) : 5344.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.56 % of base) : 9861.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) : 5343.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) : 9691.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.31 % of base) : 16346.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) : 765.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) : 775.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-81 (-40.10 % of base) : 7361.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-81 (-40.10 % of base) : 7322.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-258 (-39.94 % of base) : 5114.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-81 (-39.90 % of base) : 3281.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-333 (-39.83 % of base) : 15198.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-129 (-39.81 % of base) : 1629.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.50 % of base) : 9202.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) : 3279.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: 1518103 (overridden on cmd)
Total bytes of diff: 1503202 (overridden on cmd)
Total bytes of delta: -14901 (-0.98 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
143 : 2391.dasm (97.28 % of base)
138 : 9097.dasm (87.34 % of base)
101 : 14740.dasm (12.87 % of base)
99 : 14145.dasm (6.31 % of base)
91 : 2845.dasm (74.59 % of base)
89 : 3826.dasm (9.02 % of base)
80 : 4238.dasm (103.90 % of base)
74 : 1633.dasm (54.01 % of base)
72 : 14445.dasm (56.25 % of base)
72 : 11849.dasm (78.26 % of base)
71 : 10093.dasm (83.53 % of base)
71 : 7275.dasm (34.80 % of base)
71 : 1755.dasm (112.70 % of base)
46 : 5624.dasm (219.05 % of base)
8 : 2057.dasm (7.21 % of base)
8 : 19075.dasm (7.21 % of base)
6 : 12777.dasm (3.82 % of base)
Top file improvements (bytes):
-582 : 12427.dasm (-29.35 % of base)
-457 : 1554.dasm (-49.25 % of base)
-457 : 18541.dasm (-49.35 % of base)
-425 : 714.dasm (-46.65 % of base)
-404 : 720.dasm (-40.28 % of base)
-389 : 18453.dasm (-42.42 % of base)
-389 : 1464.dasm (-42.19 % of base)
-333 : 12067.dasm (-39.83 % of base)
-313 : 7338.dasm (-41.57 % of base)
-288 : 16093.dasm (-41.56 % of base)
-281 : 12425.dasm (-32.41 % of base)
-276 : 1306.dasm (-32.13 % of base)
-258 : 7558.dasm (-39.94 % of base)
-240 : 13214.dasm (-43.01 % of base)
-213 : 10130.dasm (-28.40 % of base)
-210 : 17283.dasm (-34.37 % of base)
-210 : 272.dasm (-34.37 % of base)
-195 : 12207.dasm (-36.45 % of base)
-195 : 10323.dasm (-35.78 % of base)
-189 : 8882.dasm (-33.69 % of base)
49 total files with Code Size differences (32 improved, 17 regressed), 23 unchanged.
Top method regressions (bytes):
143 (97.28 % of base) : 2391.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 9097.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
101 (12.87 % of base) : 14740.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
99 (6.31 % of base) : 14145.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
91 (74.59 % of base) : 2845.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
89 (9.02 % of base) : 3826.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) : 4238.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
74 (54.01 % of base) : 1633.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
72 (56.25 % of base) : 14445.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
72 (78.26 % of base) : 11849.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
71 (34.80 % of base) : 7275.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) : 10093.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
71 (112.70 % of base) : 1755.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
46 (219.05 % of base) : 5624.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
8 (7.21 % of base) : 2057.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 19075.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
6 (3.82 % of base) : 12777.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
Top method improvements (bytes):
-582 (-29.35 % of base) : 12427.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) : 1554.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-457 (-49.35 % of base) : 18541.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 714.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) : 720.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-389 (-42.42 % of base) : 18453.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.19 % of base) : 1464.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.83 % of base) : 12067.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
-313 (-41.57 % of base) : 7338.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.56 % of base) : 16093.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) : 12425.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) : 1306.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 7558.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-240 (-43.01 % of base) : 13214.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)
-213 (-28.40 % of base) : 10130.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
-210 (-34.37 % of base) : 17283.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-210 (-34.37 % of base) : 272.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
-195 (-35.78 % of base) : 10323.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
-195 (-36.45 % of base) : 12207.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
-189 (-33.69 % of base) : 8882.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
Top method regressions (percentages):
46 (219.05 % of base) : 5624.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
71 (112.70 % of base) : 1755.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
80 (103.90 % of base) : 4238.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
143 (97.28 % of base) : 2391.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
138 (87.34 % of base) : 9097.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
71 (83.53 % of base) : 10093.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
72 (78.26 % of base) : 11849.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
91 (74.59 % of base) : 2845.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
72 (56.25 % of base) : 14445.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) : 7275.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 (12.87 % of base) : 14740.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
89 (9.02 % of base) : 3826.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)
8 (7.21 % of base) : 2057.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
8 (7.21 % of base) : 19075.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
99 (6.31 % of base) : 14145.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
6 (3.82 % of base) : 12777.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
Top method improvements (percentages):
-457 (-49.35 % of base) : 18541.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-457 (-49.25 % of base) : 1554.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.65 % of base) : 714.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-240 (-43.01 % of base) : 13214.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) : 18453.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.19 % of base) : 1464.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) : 6544.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
-313 (-41.57 % of base) : 7338.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.56 % of base) : 16093.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) : 9916.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
-133 (-40.92 % of base) : 7337.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) : 6882.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
-129 (-40.31 % of base) : 7230.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) : 710.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) : 720.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-81 (-40.10 % of base) : 11629.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
-81 (-40.10 % of base) : 10467.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
-258 (-39.94 % of base) : 7558.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-81 (-39.90 % of base) : 6002.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
-333 (-39.83 % of base) : 12067.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`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: 379814 (overridden on cmd)
Total bytes of diff: 379826 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
71 : 308.dasm (109.23 % of base)
46 : 1396.dasm (219.05 % of base)
46 : 1841.dasm (219.05 % of base)
46 : 2350.dasm (82.14 % of base)
46 : 1591.dasm (82.14 % of base)
15 : 3889.dasm (7.54 % of base)
13 : 3440.dasm (9.92 % of base)
13 : 3899.dasm (7.93 % of base)
13 : 3607.dasm (9.92 % of base)
13 : 3819.dasm (7.69 % of base)
13 : 4658.dasm (8.07 % of base)
11 : 3909.dasm (4.78 % of base)
11 : 3639.dasm (7.91 % of base)
9 : 3709.dasm (9.18 % of base)
9 : 3779.dasm (9.18 % of base)
8 : 3422.dasm (10.00 % of base)
8 : 3565.dasm (10.00 % of base)
8 : 3616.dasm (10.00 % of base)
8 : 3627.dasm (10.00 % of base)
8 : 3677.dasm (10.00 % of base)
Top file improvements (bytes):
-34 : 2671.dasm (-12.88 % of base)
-33 : 1975.dasm (-16.34 % of base)
-33 : 3024.dasm (-29.73 % of base)
-33 : 1258.dasm (-16.34 % of base)
-33 : 870.dasm (-29.73 % of base)
-25 : 2670.dasm (-23.58 % of base)
-25 : 1379.dasm (-26.32 % of base)
-25 : 1374.dasm (-12.82 % of base)
-25 : 1812.dasm (-26.32 % of base)
-25 : 2255.dasm (-29.07 % of base)
-23 : 2714.dasm (-22.77 % of base)
-22 : 1378.dasm (-25.00 % of base)
-22 : 1811.dasm (-25.00 % of base)
-22 : 1375.dasm (-31.43 % of base)
-20 : 1795.dasm (-17.70 % of base)
-18 : 2548.dasm (-10.23 % of base)
-5 : 3371.dasm (-6.85 % of base)
-5 : 3394.dasm (-6.85 % of base)
-5 : 3525.dasm (-6.85 % of base)
-5 : 3189.dasm (-6.58 % of base)
47 total files with Code Size differences (22 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
71 (109.23 % of base) : 308.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
46 (82.14 % of base) : 1591.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)
46 (82.14 % of base) : 2350.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier1)
46 (219.05 % of base) : 1396.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (219.05 % of base) : 1841.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
15 (7.54 % of base) : 3889.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (9.92 % of base) : 3607.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (9.92 % of base) : 3440.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
13 (8.07 % of base) : 4658.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
13 (7.69 % of base) : 3819.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (7.93 % of base) : 3899.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
11 (7.91 % of base) : 3639.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
11 (4.78 % of base) : 3909.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
9 (9.18 % of base) : 3709.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (Tier0)
9 (9.18 % of base) : 3779.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3575.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3416.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
8 (10.00 % of base) : 3616.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3422.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
8 (10.00 % of base) : 3627.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method improvements (bytes):
-34 (-12.88 % of base) : 2671.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-33 (-29.73 % of base) : 3024.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-33 (-29.73 % of base) : 870.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-33 (-16.34 % of base) : 1975.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)
-33 (-16.34 % of base) : 1258.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)
-25 (-23.58 % of base) : 2670.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-25 (-26.32 % of base) : 1379.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
-25 (-26.32 % of base) : 1812.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
-25 (-29.07 % of base) : 2255.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-25 (-12.82 % of base) : 1374.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
-23 (-22.77 % of base) : 2714.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
-22 (-25.00 % of base) : 1378.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
-22 (-25.00 % of base) : 1811.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
-22 (-31.43 % of base) : 1375.dasm - 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 Tier1)
-20 (-17.70 % of base) : 1795.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
-18 (-10.23 % of base) : 2548.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 (Tier1)
-5 (-6.58 % of base) : 3189.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
-5 (-6.85 % of base) : 3485.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.85 % of base) : 3394.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.58 % of base) : 3405.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
Top method regressions (percentages):
46 (219.05 % of base) : 1396.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
46 (219.05 % of base) : 1841.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
71 (109.23 % of base) : 308.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
46 (82.14 % of base) : 1591.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)
46 (82.14 % of base) : 2350.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier1)
8 (10.00 % of base) : 3575.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3416.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
8 (10.00 % of base) : 3616.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3422.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
8 (10.00 % of base) : 3627.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3677.dasm - NullableTest20:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (10.00 % of base) : 3202.dasm - NullableTest3:BoxUnboxToQ(System.Enum):ubyte (Tier0)
8 (10.00 % of base) : 3565.dasm - NullableTest9:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (9.92 % of base) : 3607.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (9.92 % of base) : 3440.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
9 (9.18 % of base) : 3709.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (Tier0)
9 (9.18 % of base) : 3779.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (Tier0)
8 (8.51 % of base) : 3649.dasm - NullableTest17:BoxUnboxToQ(System.Object):ubyte (Tier0)
13 (8.07 % of base) : 4658.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
13 (7.93 % of base) : 3899.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method improvements (percentages):
-22 (-31.43 % of base) : 1375.dasm - 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 Tier1)
-33 (-29.73 % of base) : 3024.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-33 (-29.73 % of base) : 870.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
-25 (-29.07 % of base) : 2255.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
-25 (-26.32 % of base) : 1379.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
-25 (-26.32 % of base) : 1812.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
-22 (-25.00 % of base) : 1378.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
-22 (-25.00 % of base) : 1811.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
-25 (-23.58 % of base) : 2670.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-23 (-22.77 % of base) : 2714.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
-20 (-17.70 % of base) : 1795.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
-33 (-16.34 % of base) : 1975.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)
-33 (-16.34 % of base) : 1258.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)
-34 (-12.88 % of base) : 2671.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
-25 (-12.82 % of base) : 1374.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
-18 (-10.23 % of base) : 2548.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 (Tier1)
-5 (-6.85 % of base) : 3485.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.85 % of base) : 3394.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
-5 (-6.85 % of base) : 3525.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
-5 (-6.85 % of base) : 3371.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):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: 837452 (overridden on cmd)
Total bytes of diff: 819886 (overridden on cmd)
Total bytes of delta: -17566 (-2.10 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
132 : 12352.dasm (29.73 % of base)
130 : 9639.dasm (17.29 % of base)
69 : 20225.dasm (49.29 % of base)
69 : 8908.dasm (24.47 % of base)
65 : 20380.dasm (40.62 % of base)
59 : 20219.dasm (24.79 % of base)
49 : 20231.dasm (21.49 % of base)
46 : 17421.dasm (63.01 % of base)
46 : 17425.dasm (63.01 % of base)
46 : 17440.dasm (70.77 % of base)
46 : 17445.dasm (70.77 % of base)
46 : 17627.dasm (63.01 % of base)
46 : 17647.dasm (70.77 % of base)
46 : 17652.dasm (70.77 % of base)
46 : 17657.dasm (70.77 % of base)
45 : 10976.dasm (62.50 % of base)
45 : 17268.dasm (41.67 % of base)
45 : 17341.dasm (81.82 % of base)
45 : 17351.dasm (81.82 % of base)
45 : 17356.dasm (81.82 % of base)
Top file improvements (bytes):
-148 : 12460.dasm (-22.49 % of base)
-122 : 2254.dasm (-25.05 % of base)
-122 : 6200.dasm (-25.05 % of base)
-118 : 12505.dasm (-23.55 % of base)
-115 : 2258.dasm (-27.45 % of base)
-111 : 12463.dasm (-23.03 % of base)
-110 : 2252.dasm (-31.61 % of base)
-110 : 2256.dasm (-31.61 % of base)
-109 : 10567.dasm (-25.23 % of base)
-108 : 5152.dasm (-23.23 % of base)
-108 : 13360.dasm (-17.14 % of base)
-103 : 1163.dasm (-28.14 % of base)
-103 : 5198.dasm (-26.89 % of base)
-103 : 11683.dasm (-25.81 % of base)
-100 : 10601.dasm (-25.19 % of base)
-96 : 12486.dasm (-21.19 % of base)
-95 : 2450.dasm (-31.05 % of base)
-95 : 2504.dasm (-31.05 % of base)
-95 : 2508.dasm (-31.05 % of base)
-94 : 12395.dasm (-21.86 % of base)
73 total files with Code Size differences (39 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
132 (29.73 % of base) : 12352.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) : 9639.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) : 8908.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)
69 (49.29 % of base) : 20225.dasm - System.Numerics.Vector:ConvertToInt32(System.Numerics.Vector`1[float]):System.Numerics.Vector`1[int] (FullOpts)
65 (40.62 % of base) : 20380.dasm - System.Numerics.Vector:SquareRoot[ubyte](System.Numerics.Vector`1[ubyte]):System.Numerics.Vector`1[ubyte] (FullOpts)
59 (24.79 % of base) : 20219.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)
49 (21.49 % of base) : 20231.dasm - System.Numerics.Vector:CreateSequence[System.__Canon](System.__Canon,System.__Canon):System.Numerics.Vector`1[System.__Canon] (FullOpts)
46 (63.01 % of base) : 17421.dasm - System.Int64:CreateSaturating[double](double):long (FullOpts)
46 (63.01 % of base) : 17425.dasm - System.Int64:CreateTruncating[double](double):long (FullOpts)
46 (70.77 % of base) : 17440.dasm - System.Int64:System.Numerics.INumberBase<System.Int64>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
46 (70.77 % of base) : 17445.dasm - System.Int64:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
46 (63.01 % of base) : 17627.dasm - System.IntPtr:CreateTruncating[double](double):long (FullOpts)
46 (70.77 % of base) : 17652.dasm - System.IntPtr:System.Numerics.INumberBase<nint>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
46 (70.77 % of base) : 17647.dasm - System.IntPtr:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
46 (70.77 % of base) : 17657.dasm - System.IntPtr:TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
45 (62.50 % of base) : 10976.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) : 10979.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) : 10958.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 (41.67 % of base) : 17268.dasm - System.Half:TryConvertTo[ubyte](System.Half,byref):ubyte (FullOpts)
45 (81.82 % of base) : 17341.dasm - System.Int16:System.Numerics.INumberBase<System.Int16>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
Top method improvements (bytes):
-148 (-22.49 % of base) : 12460.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) : 2254.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) : 6200.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) : 12505.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) : 2258.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) : 12463.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) : 2252.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) : 2256.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) : 10567.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) : 5152.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) : 13360.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) : 1163.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) : 5198.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) : 11683.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) : 10601.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
-96 (-21.19 % of base) : 12486.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) : 2504.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) : 2508.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) : 2450.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) : 12395.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):
37 (205.56 % of base) : 17416.dasm - System.Int64:CreateChecked[double](double):long (FullOpts)
37 (205.56 % of base) : 17617.dasm - System.IntPtr:CreateChecked[double](double):long (FullOpts)
35 (194.44 % of base) : 17369.dasm - System.Int32:CreateChecked[double](double):int (FullOpts)
30 (100.00 % of base) : 17435.dasm - System.Int64:TryConvertFromChecked[double](double,byref):ubyte (FullOpts)
30 (100.00 % of base) : 17632.dasm - System.IntPtr:System.Numerics.INumberBase<nint>.TryConvertFromChecked[double](double,byref):ubyte (FullOpts)
30 (100.00 % of base) : 17637.dasm - System.IntPtr:TryConvertFromChecked[double](double,byref):ubyte (FullOpts)
45 (84.91 % of base) : 17391.dasm - System.Int32:System.Numerics.INumberBase<System.Int32>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
45 (84.91 % of base) : 17401.dasm - System.Int32:System.Numerics.INumberBase<System.Int32>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
45 (84.91 % of base) : 17396.dasm - System.Int32:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
45 (81.82 % of base) : 17341.dasm - System.Int16:System.Numerics.INumberBase<System.Int16>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
45 (81.82 % of base) : 17351.dasm - System.Int16:System.Numerics.INumberBase<System.Int16>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
45 (81.82 % of base) : 17356.dasm - System.Int16:TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
45 (78.95 % of base) : 18569.dasm - System.SByte:System.Numerics.INumberBase<System.SByte>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
45 (78.95 % of base) : 18579.dasm - System.SByte:System.Numerics.INumberBase<System.SByte>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
45 (78.95 % of base) : 18584.dasm - System.SByte:TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
45 (75.00 % of base) : 10979.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) : 10958.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)
46 (70.77 % of base) : 17440.dasm - System.Int64:System.Numerics.INumberBase<System.Int64>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
46 (70.77 % of base) : 17445.dasm - System.Int64:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
46 (70.77 % of base) : 17652.dasm - System.IntPtr:System.Numerics.INumberBase<nint>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
Top method improvements (percentages):
-37 (-64.91 % of base) : 20223.dasm - System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[long]):System.Numerics.Vector`1[double] (FullOpts)
-37 (-64.91 % of base) : 20224.dasm - System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[ulong]):System.Numerics.Vector`1[double] (FullOpts)
-59 (-33.71 % of base) : 9666.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:SortDescending[System.__Canon](System.__Canon[]):System.__Canon[] (FullOpts)
-43 (-32.82 % of base) : 8481.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-18 (-32.73 % of base) : 9097.dasm - Microsoft.FSharp.Collections.ArrayModule:Empty[System.__Canon]():System.__Canon[] (FullOpts)
-18 (-32.73 % of base) : 11929.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:Structural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 11962.dasm - Microsoft.FSharp.Collections.HashIdentity:Structural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 10005.dasm - Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 10409.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 15527.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
-18 (-32.73 % of base) : 15513.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericZero[System.__Canon]():System.__Canon (FullOpts)
-18 (-32.73 % of base) : 15847.dasm - Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
-43 (-32.33 % of base) : 10152.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) : 11931.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
-18 (-32.14 % of base) : 11967.dasm - Microsoft.FSharp.Collections.HashIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-18 (-32.14 % of base) : 11966.dasm - Microsoft.FSharp.Collections.HashIdentity:Reference[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
-63 (-31.66 % of base) : 10269.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) : 2252.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) : 2256.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) : 1155.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 x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1540227 (overridden on cmd)
Total bytes of diff: 1516813 (overridden on cmd)
Total bytes of delta: -23414 (-1.52 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
187 : 10078.dasm (36.52 % of base)
17 : 3832.dasm (6.12 % of base)
1 : 5155.dasm (0.85 % of base)
1 : 942.dasm (0.85 % of base)
Top file improvements (bytes):
-457 : 36.dasm (-49.25 % of base)
-457 : 4321.dasm (-49.25 % of base)
-425 : 28.dasm (-46.60 % of base)
-425 : 4316.dasm (-46.60 % of base)
-404 : 5535.dasm (-40.36 % of base)
-404 : 1275.dasm (-40.36 % of base)
-389 : 4411.dasm (-42.10 % of base)
-389 : 126.dasm (-42.33 % of base)
-288 : 4417.dasm (-42.86 % of base)
-288 : 674.dasm (-42.86 % of base)
-288 : 132.dasm (-42.86 % of base)
-276 : 1303.dasm (-32.17 % of base)
-276 : 5563.dasm (-32.17 % of base)
-258 : 1920.dasm (-39.94 % of base)
-258 : 6113.dasm (-39.94 % of base)
-240 : 7519.dasm (-43.01 % of base)
-237 : 2751.dasm (-46.84 % of base)
-234 : 16263.dasm (-42.09 % of base)
-225 : 16382.dasm (-20.23 % of base)
-210 : 9677.dasm (-34.37 % of base)
35 total files with Code Size differences (31 improved, 4 regressed), 36 unchanged.
Top method regressions (bytes):
187 (36.52 % of base) : 10078.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
17 (6.12 % of base) : 3832.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
1 (0.85 % of base) : 5155.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 942.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) : 36.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-457 (-49.25 % of base) : 4321.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-425 (-46.60 % of base) : 28.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) : 4316.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.36 % of base) : 5535.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-404 (-40.36 % of base) : 1275.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-389 (-42.10 % of base) : 4411.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) : 126.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)
-288 (-42.86 % of base) : 674.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) : 4417.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) : 132.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-276 (-32.17 % of base) : 1303.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-276 (-32.17 % of base) : 5563.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
-258 (-39.94 % of base) : 1920.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) : 6113.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
-240 (-43.01 % of base) : 7519.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-237 (-46.84 % of base) : 2751.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-234 (-42.09 % of base) : 16263.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
-225 (-20.23 % of base) : 16382.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 (Tier0)
-210 (-34.37 % of base) : 9677.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
Top method regressions (percentages):
187 (36.52 % of base) : 10078.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
17 (6.12 % of base) : 3832.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
1 (0.85 % of base) : 5155.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
1 (0.85 % of base) : 942.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) : 36.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-457 (-49.25 % of base) : 4321.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
-237 (-46.84 % of base) : 2751.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
-425 (-46.60 % of base) : 28.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) : 4316.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
-129 (-44.03 % of base) : 13288.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
-129 (-43.88 % of base) : 10934.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-81 (-43.55 % of base) : 16834.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
-81 (-43.55 % of base) : 7412.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]] (Tier0)
-240 (-43.01 % of base) : 7519.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
-288 (-42.86 % of base) : 674.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) : 4417.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) : 132.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) : 126.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)
-129 (-42.30 % of base) : 9538.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
-81 (-42.19 % of base) : 10782.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] (Tier0)
-389 (-42.10 % of base) : 4411.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)
-234 (-42.09 % of base) : 16263.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
-129 (-41.88 % of base) : 13354.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
-81 (-41.75 % of base) : 8379.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):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: 745455 (overridden on cmd)
Total bytes of diff: 737358 (overridden on cmd)
Total bytes of delta: -8097 (-1.09 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
77 : 7279.dasm (12.34 % of base)
70 : 5386.dasm (6.78 % of base)
50 : 5996.dasm (2.72 % of base)
45 : 2828.dasm (20.55 % of base)
45 : 831.dasm (20.55 % of base)
32 : 3893.dasm (11.11 % of base)
23 : 9513.dasm (9.96 % of base)
20 : 7840.dasm (7.72 % of base)
17 : 2117.dasm (5.65 % of base)
17 : 68.dasm (6.12 % of base)
15 : 9107.dasm (15.79 % of base)
14 : 2025.dasm (2.98 % of base)
13 : 7398.dasm (20.31 % of base)
12 : 1241.dasm (13.33 % of base)
10 : 3900.dasm (1.13 % of base)
10 : 9453.dasm (7.69 % of base)
9 : 6705.dasm (2.94 % of base)
8 : 9158.dasm (7.34 % of base)
5 : 4408.dasm (0.82 % of base)
3 : 4707.dasm (1.38 % of base)
Top file improvements (bytes):
-270 : 4068.dasm (-23.28 % of base)
-270 : 970.dasm (-21.79 % of base)
-270 : 2991.dasm (-21.84 % of base)
-235 : 9173.dasm (-8.65 % of base)
-208 : 3987.dasm (-7.29 % of base)
-177 : 9.dasm (-33.27 % of base)
-177 : 2058.dasm (-33.27 % of base)
-171 : 12.dasm (-34.20 % of base)
-171 : 2061.dasm (-34.20 % of base)
-163 : 5081.dasm (-21.39 % of base)
-163 : 737.dasm (-21.39 % of base)
-155 : 4321.dasm (-31.19 % of base)
-152 : 430.dasm (-25.12 % of base)
-152 : 2499.dasm (-25.12 % of base)
-151 : 2115.dasm (-25.00 % of base)
-151 : 66.dasm (-25.00 % of base)
-147 : 4075.dasm (-18.89 % of base)
-147 : 4428.dasm (-10.10 % of base)
-143 : 8975.dasm (-37.34 % of base)
-112 : 461.dasm (-21.05 % of base)
56 total files with Code Size differences (34 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
77 (12.34 % of base) : 7279.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) : 5386.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)
50 (2.72 % of base) : 5996.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
45 (20.55 % of base) : 2828.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
45 (20.55 % of base) : 831.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
32 (11.11 % of base) : 3893.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)
23 (9.96 % of base) : 9513.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
20 (7.72 % of base) : 7840.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) : 2117.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
17 (6.12 % 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) : 9107.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
14 (2.98 % of base) : 2025.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
13 (20.31 % of base) : 7398.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) : 1241.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) : 9453.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)
10 (1.13 % of base) : 3900.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
9 (2.94 % of base) : 6705.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) : 9158.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) : 4408.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)
3 (1.38 % of base) : 4707.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 (bytes):
-270 (-21.79 % of base) : 970.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 (-21.84 % of base) : 2991.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) : 4068.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)
-235 (-8.65 % of base) : 9173.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
-208 (-7.29 % of base) : 3987.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
-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)
-177 (-33.27 % of base) : 2058.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)
-171 (-34.20 % of base) : 2061.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-163 (-21.39 % of base) : 5081.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)
-163 (-21.39 % of base) : 737.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) : 4321.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)
-152 (-25.12 % of base) : 2499.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
-151 (-25.00 % of base) : 2115.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) : 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) : 4075.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) : 4428.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) : 8975.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (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)
Top method regressions (percentages):
45 (20.55 % of base) : 2828.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
45 (20.55 % of base) : 831.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
13 (20.31 % of base) : 7398.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) : 9107.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
12 (13.33 % of base) : 1241.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) : 7279.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) : 3893.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)
23 (9.96 % of base) : 9513.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
20 (7.72 % of base) : 7840.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) : 9453.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)
8 (7.34 % of base) : 9158.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)
70 (6.78 % of base) : 5386.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 (6.12 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
17 (5.65 % of base) : 2117.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
14 (2.98 % of base) : 2025.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
9 (2.94 % of base) : 6705.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) : 5996.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
3 (1.38 % of base) : 4707.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)
1 (1.20 % of base) : 5533.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)
1 (1.20 % of base) : 9829.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 (percentages):
-143 (-37.34 % of base) : 8975.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)
-171 (-34.20 % of base) : 2061.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)
-177 (-33.27 % of base) : 2058.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) : 3441.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-64 (-32.00 % of base) : 6930.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) : 4321.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
-59 (-29.50 % of base) : 4179.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) : 3263.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
-37 (-28.91 % of base) : 3322.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) : 5776.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) : 8265.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) : 2098.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`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)
-41 (-27.89 % of base) : 5475.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) : 3364.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) : 4787.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) : 2631.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`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)
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: 1799593 (overridden on cmd)
Total bytes of diff: 1784814 (overridden on cmd)
Total bytes of delta: -14779 (-0.82 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
177 : 2867.dasm (17.12 % of base)
171 : 1257.dasm (3.85 % of base)
135 : 15404.dasm (63.98 % of base)
128 : 1221.dasm (36.78 % of base)
122 : 6923.dasm (17.33 % of base)
98 : 15705.dasm (41.53 % of base)
91 : 917.dasm (74.59 % of base)
84 : 15321.dasm (37.84 % of base)
75 : 15141.dasm (40.32 % of base)
62 : 15554.dasm (98.41 % of base)
49 : 15416.dasm (36.03 % of base)
46 : 4684.dasm (219.05 % of base)
46 : 14865.dasm (82.14 % of base)
45 : 15773.dasm (118.42 % of base)
45 : 3192.dasm (62.50 % of base)
45 : 672.dasm (75.00 % of base)
44 : 6576.dasm (14.57 % of base)
44 : 6587.dasm (14.57 % of base)
44 : 6597.dasm (15.07 % of base)
44 : 6600.dasm (14.86 % of base)
Top file improvements (bytes):
-266 : 3266.dasm (-23.25 % of base)
-262 : 9642.dasm (-26.44 % of base)
-184 : 8047.dasm (-28.79 % of base)
-177 : 233.dasm (-33.27 % of base)
-171 : 579.dasm (-34.20 % of base)
-160 : 6759.dasm (-22.32 % of base)
-160 : 7730.dasm (-22.99 % of base)
-159 : 16156.dasm (-24.77 % of base)
-152 : 237.dasm (-25.12 % of base)
-151 : 531.dasm (-25.00 % of base)
-151 : 5840.dasm (-10.98 % of base)
-148 : 5638.dasm (-22.49 % of base)
-144 : 8672.dasm (-24.91 % of base)
-135 : 8934.dasm (-20.74 % of base)
-119 : 7881.dasm (-25.54 % of base)
-118 : 6918.dasm (-23.89 % of base)
-118 : 8467.dasm (-17.33 % of base)
-118 : 9643.dasm (-15.30 % of base)
-118 : 6719.dasm (-23.09 % of base)
-118 : 8645.dasm (-22.69 % of base)
66 total files with Code Size differences (45 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
177 (17.12 % of base) : 2867.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
171 (3.85 % of base) : 1257.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
135 (63.98 % of base) : 15404.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
128 (36.78 % of base) : 1221.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
122 (17.33 % of base) : 6923.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)
98 (41.53 % of base) : 15705.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
91 (74.59 % of base) : 917.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
84 (37.84 % of base) : 15321.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
75 (40.32 % of base) : 15141.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
62 (98.41 % of base) : 15554.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
49 (36.03 % of base) : 15416.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
46 (82.14 % of base) : 14865.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)
46 (219.05 % of base) : 4684.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
45 (62.50 % of base) : 3192.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 (118.42 % of base) : 15773.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
44 (15.07 % of base) : 6597.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) : 6600.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) : 6587.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) : 6576.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
Top method improvements (bytes):
-266 (-23.25 % of base) : 3266.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) : 9642.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) : 8047.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) : 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) : 579.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
-160 (-22.32 % of base) : 6759.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) : 7730.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)
-159 (-24.77 % of base) : 16156.dasm - System.Linq.Enumerable:TryGetLast[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) : 5840.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) : 531.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) : 5638.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) : 8672.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)
-135 (-20.74 % of base) : 8934.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) : 7881.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 (-17.33 % of base) : 8467.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)
-118 (-15.30 % of base) : 9643.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)
-118 (-23.09 % of base) : 6719.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)
-118 (-22.69 % of base) : 8645.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)
-118 (-23.89 % of base) : 6918.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) : 4684.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
45 (118.42 % of base) : 15773.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
62 (98.41 % of base) : 15554.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
46 (82.14 % of base) : 14865.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)
45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
91 (74.59 % of base) : 917.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
135 (63.98 % of base) : 15404.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
45 (62.50 % of base) : 3192.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)
98 (41.53 % of base) : 15705.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
75 (40.32 % of base) : 15141.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
84 (37.84 % of base) : 15321.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
128 (36.78 % of base) : 1221.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
49 (36.03 % of base) : 15416.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
122 (17.33 % of base) : 6923.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) : 2867.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
44 (15.07 % of base) : 6597.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) : 6600.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) : 6587.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) : 6576.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) : 6523.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)
Top method improvements (percentages):
-171 (-34.20 % of base) : 579.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)
-43 (-32.82 % of base) : 8726.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
-18 (-32.73 % of base) : 10213.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-18 (-32.73 % of base) : 13701.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) : 7840.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) : 9013.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) : 5937.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
-63 (-31.03 % of base) : 6354.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) : 7588.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) : 13191.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) : 7922.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) : 5540.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) : 5681.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) : 5532.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) : 5679.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) : 8572.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) : 11256.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)
-37 (-28.91 % of base) : 5746.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.__Canon]():System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon] (FullOpts)
-184 (-28.79 % of base) : 8047.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)